| WINDOWS MAGIC TRICKS ¢ HARD DRIVE BASICS
KNOCKOUT
NOTEBOOKS!
PLUS!
U.S, $2.95 3
Ml od
71486'02193
0 5)
64/128 VIEW
If you've submitted a program recently
and are still waiting to
hear from us, please be patient.
Tom Netsel
here is good news and
bad news to report this
month. The good news
is that we've been
swamped with excellent
type-in submissions. The
bad news is that we've
been swamped with excel-
lent type-in submissions.
| made a pitch for pro-
grams in this column and in
fillers elsewhere in the mag-
azine encouraging submis-
sions. Boy, did they work!
In fact, they've worked al-
most too well. For the past
few months we've been del-
uged with good and great
programs. We now have a
large stack of them waiting
to be reviewed, This has led
to a new problem: Since it
takes time to evaluate a pro-
gram properly, we've been
slow in mailing out contracts
and rejection notices.
If you've submitted a pro-
gram and haven't heard
from us, please be patient.
The quality as well as the
quantity of submissions has
been excellent this year,
and we want to buy as
many programs as we can.
It just takes time to go
through them all. When
we've selected the pro-
grams that we plan to use in
an issue and then come
across another good pro-
gram, we hate to reject it.
We'll often hold it and use it
the following month. But
when we start holding too
many programs, the system
backs up. We'll get things
moving shortly.
Actually, | love having too
many submissions—so
please keep them coming!
With your help, we've been
able to publish some great
programs, and we want to
continue the practice. A cou-
ple that come to mind from
last month are two
SpeedScript spelling check-
ers for the 64 and 128.
| normally don’t have two
such similar programs in the
same issue, but | thought
that each spelling program
would offer advantages to
64 and 128 users.
In this issue, we have a
couple of programs that'll
help programmers who
work with sprites. These pro-
grams are geared more for
the intermediate-to-ad-
vanced programmer who is
already familiar with sprites
and some of the problems
associated with them.
MOB Master, by Hong
Pham, adds ten new graph-
ic commands to the 64 that
make programming sprites
much easier. Programming
sprites on a 64 usually re-
quires a lot of code filled
with POKEs, but MOB Mas-
ter gives the 64 many of the
same features and sprite
commands found in BASIC
7.0 on the 128. With these
commands, you'll find it
much easier to define, posi-
tion, and animate sprites.
Most people know that
the 64 is capable of produc-
ing 16 different colors, but
how would you like to boost
that number to 136? You
can with 136 Colors, a pro-
gram by David Kwong.
Machine language pro-
grammers who use a 128
will want Bassem 128. Long
a popular assembler for the
64, the 128 version is too
large to type in, but it's avail-
able as this month's Gazette
Disk bonus program.
| hope you'll find these
and the other Gazette pro-
grams to be entertaining
and informative. Be sure to
let us know which programs
you like or dislike. a
GAZETTE
64/128 VIEW G-1
Great submissions flood Gazette office.
By Tom Netsel.
SID SIMPLIFIED G-3
Cut through the confusion of programming the
Sound Interface Device.
By Larry Cotton.
REVIEWS
Arachnophobia, Fun Graphics Machine, and
DweeziLabel.
FEEDBACK
Questions and comments from our readers.
MACHINE LANGUAGE
Programming for speed, economy, or both?
By Jim Butterfield.
BEGINNER BASIC G-20
Try a little machine language when your program
needs a burst of speed.
By Larry Cotton.
G-10
G-16
G-18
D’IVERSIONS G-21
Just call me Captain Future!
By Fred D'Ignazio.
GEOS G-22
Assembling the ultimate GEOS system.
By Steve Vander Ark.
PROGRAMMER’S PAGE G-24
Great tips from readers.
By Randy Thompson.
PROGRAMS
MOB Master G-25
136 Colors G-29
Tunnel Trap G-33
BASIC Move and Save G-36
Noah’s Reader G-38
Locate G-38
Bug-Swatter G-40
NOVEMBER 1992 COMPUTE G-1
PUMP UP
YOUR PRODUCTIVITY!
Harness the potential of your, The rl il le
64 and 128 with these get
Do it all with Commodore
graphics!
power ul pr ogr ‘ams. Here's what's on it—
Get more work out of your 64 and 128 Se
with these two new disk products from 128 Graphics Compactor,
64 Animator, VDC Graphics,
Dissolve 128, Super Slideshow,
128 Animator, 1526 PrintScreen,
COMPUTE 's Gazette — the 1992
Best of Gazette Utilities, and
the Gazette Graphics Grab Supratechnic, Medium-Resolution
Bag! Graphics, Screen Maker, GAS!64—
The 1992 Best of Special Edition, GAS!128-Special
Edition.
Gazette Utilities
Seize control of your operating
system and your world!
Here's what's on it-MetaBASIC 64,
MetaBASIC 128, Quick, Sprint Il,
Ultrafont+, RAMDisk 64, RAMDisk 128,
BASSEM, SciCalc 64, List Formatter,
MegaSqueeze.
Extend Your Computer Power With This Powerful Software!
___ Check or Money Order _ MasterCard _ VISA
| want to pump up my productivity! Please send me the
| @ disks checked below at $11.95 each. Credit Card No. Exp. Date
oy Signature
The 1992 Best of Gazette Utilities (Required)
___ The Gazette Graphics Grab Bag Daytime Telephone No.
_— Subtotal ama
___ Sales Tax (Residents of NC and NY please add appropriate sales tax for your
| area. Canadian orders, add 7% goods and services tax.) Address
___ Shipping and Handling ($2.00 U.S. and Canada, $3.00 surface mail, $5.00 City
airmail per disk.)
State/Province === ZIP/Postal Code
___ Total Enclosed
|
| Mail this coupon to COMPUTE's 1991 Utilities, 324 West Wendover Ave., Ste. 200,
MasterCard and VISA accepted on orders with subtotal over $20. Greensboro, NC 27408.
EN = se es
= THE J3 souND
BeINTERFACE
CIRCUIT
CHIP FONDLY
: | KNOWN AS SID,
RESIDES DEEP IN THE ELECTRONIC
INNARDS OF THE
COMMODORE 64 AND 128 COMPUTERS.
IT HAS THE ABILITY TO LET YOUR
| COMPUTER PLAY, SING, MOAN,
TALK, RING, THUMP, SCREAM, AND
WHISPER. THIS CHIP ALONE HAS BEEN
AT LEAST
PARTIALLY RESPONSIBLE FOR THE
FACT THAT ¢ COMMODORE STILL
BUILDS THE 64 ALMOST NINE YEARS
AFTER ITS SPLASHY INTRODUCTION—
A COMPUTER LONGEVITY RECORD.
DEVICE, 2 AN}
INTEGRATED
With all SID’s capabilities, program-
ming it in BASIC 2.0 remains an exer-
cise in tedium, because of the many
POKEs required to access the chip.
(BASIC'’s POKE puts a number from 0
to 255 into a specific location in the
computer.)
Fortunately for 128 owners,
Commodore included with that
machine a much-advanced BASIC
7.0, which does support SID and
makes programming sounds much
easier.
This article will attempt to cut
through the confusion of programming
SID and show you, step by step, how
to access this marvelous chip. I'll con-
fine my remarks to BASIC 2.0's com-
mands, common to both the 64 and
128, and I'll show you how to cut down
drastically on the number of POKEs.
We'll start with the very simplest exer-
cises and progress to the more
advanced. If you'll stay with me from
the beginning, you'll be pleased with
the results.
If you're confused about program-
ming SID, it will first be necessary to
power down your own mind to rid it of
all past frustrating programming ses-
sions. Start from scratch. Remember
that we're talking about only 29 of the
64's 64,000 or so memory registers.
How complicated can they be?
Voices
A human being has only 1 voice; a
saxophone has only 1 voice. A six-
string guitar has 6; a piano, 88, SID
has 3. Think of SID as a three-string
guitar. That is, up to three notes can
be played simultaneously, each under
separate control (except for volume).
We'll limit our initial discussions to
voice 1, which occupies SID's first
seven memory registers. Remember
that number, 7; it'll crop up again.
Order of POKEs
Here's a subject rarely addressed
and, | think, fairly critical to the suc-
cess of SID programming: the order
that the memory registers are poked.
Here is the normal order for playing a
simple sound.
1. Clear the chip.
2. Turn up the volume.
3. Wait.
4, Set a frequency.
5. Set an envelope.
6. Turn on a waveform.
Clear the Chip
SID occupies memory registers 54272
through 54300. All those registers
(except the last four, which cannot be
poked) should always be cleared of
G-4 COMPUTE NOVEMBER 1992
SID Chip
CANNOT
BE
their contents near the beginning of
every BASIC program which uses
sound. Here's how.
10 $=54272: FORJ=S TO S+24: POKEJ,0:
NEXT: REM CLEAR SID
SID's first memory register should
be defined as a constant; we'll use S.
Then every other register may be
defined as an offset of S. A FOR-NEXT
loop pokes a 0 into each of the SID
memory registers, effectively silencing
the chip and preparing it for action.
Turn Up the Volume
SID's last pokable register is the vol-
ume control. Its range varies from 0 to
15, with O being the quietest setting.
Let’s turn the volume wide open with
the following statement.
20 POKES+24,15: REM FULL VOLUME
Any memory register will accept
values from 0 to 255, but 54296 uses
only values from 0 (silent) to 15 (loud)
to control volume. Normally, S+24 can
keep a value of 15 throughout a
BASIC program.
Wait
Turning up SID's volume makes a
popping noise in the TV or monitor's
speaker, and this can interfere with
your carefully crafted sound. Always
introduce a period of silence after first
ONE
MEMORY
REGISTER
turning up SID’s volume. We'll show a
do-nothing time delay, but ordinarily at
this point in a program you'd be
preparing the screen, reading data,
setting variables, and so forth.
30 FORT=1 TO 1000: NEXT
Set a Frequency
SID needs several other values poked
to it before it will speak up. For
instance, it needs a frequency. A fre-
quency controls a note’s pitch.
40 POKES+1,16: REM FREQUENCY
SID's voice 1 memory location 54273
(S+1) can use all values from 0 to 255.
A value of, say, 5 produces sounds of
low pitch (like a tuba). A value of 200
produces a high- pitched sound (like a
piccolo).
Set an Envelope
What's an envelope? Nothing more
complicated than how the volume of a
single particular note (or sound effect)
changes as it plays.
Think about the way a single guitar
string sounds as it’s being plucked.
The guitar makes no sound at first, but
its sound level rises from silence to
maximum volume immediately after
the string is plucked. That's called
attack. The sound then gradually
fades away to silence. This is called
decay.
TENE Iinioduices:
WORLD'S LOWEST
Amiga 500 Computer AMIGA
Basic Package
a ities!
Limited Quantities = sistas, Oreo Roe
500 Basic Package
Power Pack eAmiga. ‘Monitor
ages! _ TENEX 500 Basic Package vamiga 1084S Stereo
Plus 3 Great Value Packag saioere Bundle #1 “Gornwore Bundle #1
Free .
#2 & Joystick
NEX Bonus Pack sSoftware Bundle #2 & Joystick «Software Bundle 2
Ten pamiga 500 Bosic Package *Free Lemmings! sfree Lee ory Expansion
Software Bundle #1 «TV Adapter eTENEX 500 9.75
. a Lemmings! eTENEX 500 Memory Expansion Total at Reg. Price eH
5 x
sv Adapter soa TotolatReg Price S998 Low TENEX Package PIC® «$54.80 Morel
. b je
TRE aoe Price $339.95 Low TENEX ieesh ys Save $70.75 More!
Low 90 Morel
You Save $24.
é F-40 Pursuit
ludes: Mosterlype Miniature Golf
Bundle # 2 inc! .
software Bundle #1 includes: Tetris, Where In SoA Hol 'WnatiWhen\Where!, and Hole-in-One
the World s Carmen Sandiego, and Textcraft
Commodore 64
Computer
Hot Paneae Vales a Onl
y C2)
$179 95 $136 99 $1499
STAR NX-1020 RAINBOW
Enj i oa c a
iz ominen en Ose eh easy Tris on got Mu ee provid
high-speed cheno 2aseps ea ¢ Of 60s versatility at a great Price, Quietly print In
andl nearletter-quoniyg 7cps, Featuce * Near-letter-quality at 75cps, Choose top or
Include a big 16KByte buffer, six Tes ar Paper paths and fi
K ; ident Di il ive resident fonts-
enient f raft, Courier, Sans Serif,
the Obilty to print on four pen ono. Download 192 chara ond Otator 1 & 2.
Panel interface for interference-tieg case Custom fonts and logos, ae veratltits
extended further with the abili to
¥ cl
Qs 265 characters for creating unique logos 4kByte buffer with the push of eta Ae
and fonts, You get E Two-year warranty, i 1541 Il
Proprehs: Y Qu.get Epson FX and IBM NXTO01'Mialafone SugeRetal $249.00 CO e
; Disk Drive
OTHER PRINTERS CARDPRINT G-W1z INT n
Star NX-2420 Rai . T G-WIZ INTERFACE,
Star Lagernacceraeoes pea et Connect any printer to your C64/128, Dumps
Star NX-2430 Multi-f high-res screens up to 18 times f
Panason cKX-P21 80 Wee eae Competitive interfaces without bien one $ 95
Panasonic KP180; AG8584 $159.98 warranty. From Supra, Sug. Retail $69.95
nic KX-P2123 A72449 $240.98 G-Wir Interface 34484 9
Panasonic eae 124i AS7112 $289.95 sia
sonic KX-P1123 A Y
Panasonic KX-P4410 Laser A73e8 sleee
$649.95
Don’t miss out on the lowest prices
on the Amiga 500, plus a full line of
Commodore and Amiga hardware,
software, and accessories.
Call today to receive your FREE
catalog with the greatest prices on the
most popular hardware and software!
= dag
eos
Shipping, Handling, Insurance
3 z Order Amount Charge
: ee | less than $19.99 $4.95
56800. Magnetic Drive : Se) $5.95
Mishawaka, IN 46545 $7500800.89 3795
—S (219)259-7051 FAX (219)259-0300 Sree nee
dette’ ae ane ae We gladly accept mail orders! : : $300.00-$499.00 $12.95
Computer EXPress Cirle Reader Service Number 170. © Sonon seas sere
Order Today! Call 1-800-PROMPT-1 " @ 4) $10008 Over 2.8% of Order
(1-800-776-6781)
COMMODORE 64 and COMMODORE 128 are registered trademarks of Commodore Electronics, Ltd, AMIGA is a registered trademark of Commodore Amiga Inc., NOTE: Due to publishing
lead-times, product prices and specifications are subject to change without notice. "APO, FPO, AK, HI, CN, VI, GU, and foreign orders are subject to additional shipping charges.
Rep
SID can create sounds quickly, like
a guitar, or slowly, more like a bowed
violin. It can also do two more things
to a sound which a guitar can't. It can
prolong a sound's volume at a particu-
lar level. This is called sustain. SID
can also cause the sound to stop ata
controllable rate with a process called
release,
So, there you have it. The sound's
envelope is made of attack, decay,
sustain, and release. Each of these
properties is controllable. For now
though, the properties we'll use are
attack and decay. A value of 12, in
fact, poked to the envelope simulates
the plucking of a guitar string. Later,
we'll see how to determine values to
poke. Where do we poke that enve-
lope value? We poked the frequency
into S+1, so the envelope must be
poked into S+2, right? I'm afraid not;
S+2 and S+3 are reserved for fine-tun-
ing the pulse wave. S+4? Nope. That
turns on voice 1. S+5 (54277) is voice
1's main envelope-controlling register.
50 POKES+5,12: REM ATTACK /DECAY
If you want to experiment with sustain
and release, add this line.
52 POKES+6,4: REM SUSTAIN/RELEASE
SID AND
VARIABLES
Using a variable such as F,
instead of a number like 16, yields
a whole new world of sounds.
Here's an example which emulates
a warning siren.
10 $=54272: FORJ=STOS+24: POKEJ,0:
NEXT: REM CLEAR SID
20 F=16: REM DEFINE VARIABLE
30 POKES+24,15: REM FULL VOLUME
40 FORT=1T0200: NEXT: REM SHORT
PAUSE
50 POKES+1,F: POKES+8,F*1.3: REM
COARSE FREQUENCIES
60 POKES, 195: POKES+7,31: REM FINE-
TUNE FREQUENCIES
70 POKES+5,12: POKES+12,12: REM
ATTACK/DECAY
80 POKES+6,255: POKES+13,255: REM
SUSTAIN/RELEASE TO MAXIMUM
90 POKES+3,8: POKES+10,8: REM SHAPE
OF PULSE
100 POKES+4,65; POKES+11,65: REM
TURN ON PULSE WAVEFORM
110 F=F+1: REM INCREMENT FREQUENCY
VARIABLE
120 IFF=36THENF=16: REM CHECK FOR
UPPER FREQUENCY LIMIT
G-6 COMPUTE NOVEMBER 1992
Turn On a Waveform
Last, but certainly not least, the sound
needs a waveform. The 64 and 128
both feature four waveforms, each with
a characteristic timbre. The triangle’s
sound is soft and mellow, the sawtooth
mimics a saxophone, the pulse is hol-
low, and the noise is, well, noisy.
To actually begin the sound, we
use voice 1's control register, S+4, We
usually poke one of four particular val-
ues to produce the desired waveform.
Triangle siV¢
Sawtooth 33
Pulse 65
Noise 129
Here's the way we'll select a waveform
in our program. For this example, let's
select a triangle waveform and poke
its value into S+4,
60 POKES+4,33: REM TURN ON SAWTOOTH
WAVEFORM
| like waveform 33, the triangle; it
has a nice bite to it. If you’ve been
entering the lines as presented, you
can now run the program. You should
be rewarded with a nice strong note
that begins suddenly and gradually
dies out. (Be sure to turn up the vol-
130 POKES+1,F: POKES+8,F*1.3: REM
CHANGE FREQUENCIES BOTH VOICES
140 GOTO110
We're using the variable F
(defined in line 20) instead of the
number 16 for the coarse frequen-
cy. The coarse frequency pops up
first at line 50. In line 130, voice 2's
frequency is calculated as a multi-
ple (1.3 times) of voice 1's. Why?
We do it to keep the interval
between the two voices’ frequen-
cies roughly constant for a more
authentic siren sound.
In line 110, we increase variable
F by 1. Try different increments or
try decreasing, instead of increas-
ing, F. Line 120 limits the upper
value of F. Try other limits or values
less than 16 if you're decreasing F.
Once a limit is reached, F is
reset to its original value. Line 130
once again pokes new values to
both voices’ frequency registers.
Voice 1 gets newly increased F;
voice 2 gets a multiple of F. Line
140 sends control back to line 110,
which increases F again. The pro-
gram stays in a loop from line 110
through line 140 until you stop it by
pressing the Run/Stop key.
SID Wave Forms
Triangle
ume on your TV or monitor. The 15
that we poked to 54296 ensures that a
good strong signal leaves the comput-
er, but it won't be heard if your monitor
volume is too low.)
Six lines to create a sound; that's not
too bad, is it? Just remember the order.
1. Clear the chip (S through S+24).
2. Turn up the volume (S+24).
3. Wait.
4. Set voice 1's frequency (S+1).
5, Set voice 1's envelope (S+5).
6. Turn on voice 1's waveform (S+4).
Other Registers
We produced sound with only three of
voice 1's memory registers; we didn't
use registers S, S+2, S+3, and S+6.
Let's look at them now.
S is the register that fine-tunes
voice 1's frequency, which was
coarsely set with S+1. If you wanted
just a noise or a beep of no particular
frequency, S+1 would be enough fre-
quency control. To accurately pro-
duce musical notes, however, we
must also poke a value to S.
What value? For frequencies of
musical notes, the values are listed in
your User's Guide in a table appropri-
ately called Music Note Values. For
nonmusical sounds, such as drums,
it's mostly a matter of trial and error.
Let's fine-tune the frequency we
poked into S+1 in line 40. Add this line
to the program to give us an exact
D/FOR THE C64 ANDIG
6128 1M 64 MODEL)
(ce Ses
New * Big Blue Reader 128/64 - 4.0
Transfers word processing, text, ASCII, and binary files between
(64/128 and IBM PC compatible 360K 5.25" and 720K 3.5" disks.
New Version 4.0 features: Transfers ASCII, PET ASCII and Screen
Code files including: WordWriter, PocketWriter, SpeedScript, PaperClip,
WriteStuff, GEOS, EasyScript, Fleet System and most others.
Supports drives # 8-30. New Backup (C128) and Format (1571/1581)
ATEN programs. Reads MS-DOS sub-directories, uses joystick, and more.
Includes C128 & C64 programs. Requires 1571 -or- 1581 Disk Drive.
OO Te Big Blue Reader 128/64 - 4.0 only $44.95
Version 4.0 upgrade, send original BBR disk plus $18.
Bible Search 3.2
. Complete Old & New Testament text on (4) 1541/71 or (2) 1581 disks
. An Exhaustive English Concordance on (2) 1541/71 or (1) 1581 disks
KEYBOARD OVERLAY -~-$3,50 EA Includes more than 700,000+ references.
OR C64 IS SHIPPED | 3 five (5) second look-up time, per/word, per/disk
. Instant, automatic spell checking of more than 12,800 words
. Wildcard and Boolean AND, OR & NOT search options
. Search the entire Bible in 5 seconds with 1581 or HD (version 3.52)
Money Back Guarantee!
Features: C64 & C128 programs; screen, printer and disk output
users guide, disk case. Available on (7) 1541/71, or (4) 1581 disks
KJV $49.95 | NIV $59.95 | Both $90
tx Any questions? Call or write for more information.
Cs
SUPPORTS
MULTIPLE
ORIVES
GEOS SCREE
COMPUTER T!
2
E+
ron
NOOERW
Gm CLIP ART VOL.1 GRAPHICS ~
FGM CALENDAR TEMPLATE ONTHLY ~~~
FGM OVERLAY TEMPLATE mi D_ OVERLAYS
STATE COMPUTER FOR OVER C64 1S SENT--$5,.00
FGM UPDATE DISK V6.4 U GM V6,4--$2.00
JEBBH RHEE RHEE BHE BBE HEBHEBREHHORREEBBEHEBEBHEHBHBBBEHBBE
PLEASE ADD FOR SHI A ----$3.50
FOREIGN ORDERS: F FOLLOWS}
CANAD AME ICO 0; ERS $5.00
Order by check, money order, or COD, US funds only.
es’ FREE shipping in US. No Credit Card orders
Canada & Mexico add $4 S/H, Overseas add $10 S/H ($5 BBR)
SOGWAP Software @ (219)724-3900
115 Bellmont Road; Decatur, Indiana 46733
The FGM Connection, P.0.Box 2206, Roseburg, OR. 97470
FOR MORE INFORMATION CALL 503-673-2234
“Gazette Gallery,” where each month we present the
very best in original 64 and 128 artwork.
So don’t waste another moment. Subscribe to-
day to COMPUTE’s Gazette Disk and get 12 issues
for only $49.95. You save almost 60% off the single-
issue price. Clip or photocopy and mail completed
coupon today.
Individual issues of the disk are available for
$9.95 (plus $2.00 shipping and handling) by writing
to COMPUTE, 324 West Wendover Avenue, Suite
200, Greensboro, North Carolina 27408.
YES! Start my one-year subscription
to COMPUTE’s Gazette Disk right away
for only $49.95.*
O Payment enclosed (check or money order)
OCharge OMasterCard O Visa
Yes, save time and money! Subscribe to the Gazette
Disk and get all the exciting, fun-filled Gazette pro-
grams for your Commodore 64 or 128—already on
disk!
|
|
|
|
|
|
|
Subscribe today, and month after month you'll
get all the latest, most challenging, and fascinating 1
programs published in the corresponding issue of cca NG Exp: Date
COMPUTE. | Signature
|
|
|
|
I
|
|
|
New on the Gazette Disk! In addition to the Name pai
programs that appear in the magazine, you'll also Addrabs
get outstanding bonus programs. These programs, ;
which are often too large to offer as type-ins, are Sea) ZIP/
available only on disk—they appear nowhere else. Province Postal Code
Mail to COMPUTE's Gazette Disk, P.O. Box 3250, Harlan, IA 51593-2430
"Residents of NC and NY, please add appropriate sales tax for your area. Canadian
orders, add 7% goods and services tax.
As another Gazette Disk extra, check out
pitch of middle C on the piano.
45 POKES,195: REM FINE-TUNE FREQUENCY
Shaping the Pulse
While S+2 and S+3 control the shape
of voice 1's pulse waveform, S+2 is
rarely used. Poking a value of 8 to S+3
will give the pulse waveform a nice,
even shape. It's not necessary, how-
ever, to shape a pulse waveform
unless you plan to use it. To hear what
the pulse sounds like, add line 55 and
change line 60 as follows.
55 POKES+3,8: REM SHAPE OF PULSE
60 POKES+4,65: REM TURN ON PULSE WAVE
FORM
Run the program again, and listen to
the difference in the sound. Now exper-
iment. Try waveforms 17 (triangle) and
129 (noise). Try various frequencies
and envelopes. A reminder: Don't con-
fuse voices with waveforms. SID has
three voices (remember our three-string
guitar?) and four waveforms (triangle,
sawtooth, pulse, and noise).
Voices 2 and 3
So much for voice 1. If you want to
play more than one voice at a time,
each must be set up independently.
G-8 COMPUTE NOVEMBER 1992
For instance, let's add another note to
harmonize with the last one. Modify
lines 40-60.
40 POKES+1,16: POKES+8,21
45 POKES, 195: POKES+7,31
50 POKES+5, 12: POKES+12,12
55 POKES+3,8: POKES+10,8
60 POKES+4,65: POKES+11,65
Voice 2's values follow the colon in
each line. To program voice 2, just
add 7 to voice 1's memory registers.
In line 40, S+1 for voice 1 becomes
$+8 for voice 2; in line 45, voice 1's S
becomes voice 2's S+7; and so on.
Notice that in this example I've
poked all voice 2 registers with the
same values—except frequency in
lines 40 and 45. Frequency values 21
and 31 (from the Music Note Values
table) are needed to produce E above
middle C on the piano. You may, if you
like, set different envelopes for each
voice (line 50) or different waveforms
(line 60). If you run the program now,
you'll hear a two-note chord in perfect
harmony.
As you've probably noticed by now,
SID's three voices are arranged within
the chip in groups of seven registers
each. Thus the control registers for
voices 1, 2, and 3 are 54276, 54283,
3 You
PATHETIC
TECHNO- MORON.
and 54290, respectively. The
attack/decay portion of the three
envelopes is set in registers 54277,
54284, and 54291, respectively.
Therefore, to program voice 3, just off-
set the memory registers by 7 again.
As promised, here’s how to reduce
the proliferation of POKEs for this par-
ticular program. This technique won't
always be applicable, but it may give
you some ideas. Begin by copying
lines 10 and 30 from the above pro-
gram. Then delete the remaining lines.
Now add these lines.
40 FORG=1 TO 10: READL,D:POKES+L,D
50 NEXT:END
100 DATA 1,16,8,21,0,195,7,31,
5,12,12,12,3,8,10,8,4,65,11,65
That's it! All SID's offsets from S
(54272) and the pokable values have
been compressed into one data line.
One FOR-NEXT loop does the rest of
the work.
While this simple program touches
on only a few of the SID chip's won-
derful possibilities, you can have fun
experimenting with changing wave-
forms, frequency values, and voices. |
hope programmers will be encour-
aged to further explore the sound
capabilities of their 64s and 128s. O
SBIT "al
LINDENHURST NY 11757-0542
DON’T LET A SPILL CAUSE A COMMODORE
MELTDOWN
5 ONE SMALL MISTAKE COULD DESTROY
1: ASST. (StarTrek*+) | yQUR COMMODORE COMPUTER FOREVER
4: GAMES (Tetris +) \Ciaealcon comewhen Cacan malted for earl tel
5: DEMOS/MOVIES | these sels fit over every key 20 precisely that you won't
6: PRODUCTIVITY | even know it’s there... you spill something, that is!
7: GEOS CLIPART | Keep out accidental spills, dirt, dust, and ashes!
Never Again Wear Off The Priat On Your Keys!
Save Your Commodore for ONLY $ 19.00
8 Order # VS64 .......fits your Commodore 64 or Vic 20
Been”) | Order # VS64C........ufts your Commodore 64C
D: ART GALLERY | Oder # VS12B......een+.00ennfits your Commodore!28
Ee Ehc at 5 1000| | COMMERCIAL SOFTWARE !
CALL FOR ITEM AVAILABILITY !
You must sign that DIEHARD
<4 ed BLOCKOUT
PARADROD..
CLUBHOUSE SPORTS 1.8 5.00
aipeGere| | SEGA ARCADE SPACK.....$ 15.00
Jovstick. |__| (Includes Out Run, AfterBurner, Shinobi,
ONLY $5.00 Alien Syndrome, and Thunderblade !)
MANY ITEMS ARE CLOSEOUT ITEMS ONLY,
AND THE AMOUNT OF STOCK MAY BE LIMITED!
CALL OUR OFFICE TO VERIFY AVAILABILITY !
SHIPPING $2.00 For First Item + $1.00 cach additional item
°U.S. Funds Oaly! “SORRY NOC.O.D.’s OR CREDIT CARD
FOR A FREE COPY OF OUR CATALOG, CALL:
(516)-957-1110 MONDAY - FRIDAY 10am to 5pm EST
Circle Reader Service Number 162
Create a Requires:
Wester Print Shop
Style Graphics, Borders, and Fonts for the Print Shop . Version 2.0
or
with your Print Shop
fo Version 1.0
Commodore with the
64/128 Companion
4 or
Computer \G Print Shop
: Version 1.0
WESTERN é : with the
Holiday
HERITAGE Edition
Cantte..$ 9.00
AK Hin-$ 6.00
‘APO, FPO...5 6.00
Wa, Ran Tun $1.92
tae GRAPHICS
For more info, ‘Version for the Commodore 64/128 Includes 9 Pia and 7 Pia Pristers,
509-276-6928
Neocon’
Over 140 New Ways to Create a Total Western Environment
with 90 Graphics, 42 Borders and 10 Fonts for the Print Shop.
* Create Westem Style Stationery, Cards and Invitations.
«Invite Your Friends to a Wester Birthday Party, Bar-B-Q or Card Game.
* Make 10 Gunfighters of the Old West, Wanted Posters.
+lmpress Your Club with Western Posters, Banners and Calendars.
*Make posters for Your Favorite Wester Event, Horse Show, Hay Ride.
+Designs for over 50 Western Business Activities and Club Events.
«Kids Share Secret Messages with Your Friends.
tiny
f LF ‘ LIRR
eA SS GRAPHICS = ‘
Horse Feathers Graphics Inc., N. 27310 Short Road, Deer Park, Wa. 99006-9712
Circle Reader Service Number 234
GRAPEVINE GROUP -
COMMODORE UPGRADES ~
SPECIALS
COMPUTER SAVER: This C-64 Protection System saves you costly repairs.
1 Over 52% of C-64 failures are caused by malfunctioning power supplies that
destroy your computer. Installs in seconds between power supply & C-64. No
soldering. 2 year warranty. An absolute must and great seller .. $17.95
® PRINTER PORT ADAPTER by Omnitronix. Avoid obsolescence. Allows you to
use any Commodore (C-64) printer on any PC compatible or clone. Does not
work with Amiga. . sssaee $34,95
512K RAM EXPANDERS
By special arrangement with Commodore, we are able to purchase ata fantastic
price 400 of the original 512K 1750 RAM expander units for your C64 or C128
computer. Now keep up with the latest technology. Upgrade to 512K with a
simple plug-in module. Completely compatible and comes with software. If you
have a C64 you will need a heavier power supply (4.3 amp), which we will give
you for $31.00, C128 users do not need this power supply. This Is the original
Commodore unit with over 800,000 sold. $99.95
Super 1750 REU CLone (512k). Does not require a larger power supply..$142.50
COMMODORE DIAGNOSTICIAN II
Originally developed as a software package, then converted to a readable
format, the Diagnostician has become a fantastic seller. With over 38,000 sold
worldwide, Diagnostician II utilizes sophisticated cross-reference grids to locate
faulty components (ICs) on all C-64 and C1541 computers (C-128/64 mode).
Save money and downtime by promptly locating what chip(s) have failed. (No
equipment of any kind needed.) Success rate {rom diagnosis-to-repair is 98%.
Includes basic schematic $6.95
(Available for Amiga compi .95).
NEW POWER SUPPLIES
© Asuper-heavy, repairable, “not sealed” C-64 power supply with an output of
4.3 amps (that's over 3x as powerful as the original). Featuring 1 year warranty,
ext, fuse, schematics, UL approve: 37.95
(Includes bonus Commodore Diag @ $6.95)
© Our Biggest Seller © 1.8 amp repairable heavy duty supply for C-64, (Over
120,000 sold.)..... easttnaueetsasiersegeaO5
REPLACEMENT/UPGRADE
CHIPS & PARTS
9
4164 (C-64/RAM)..
C-128 ROMs Upgrade (set 3)
C1571 ROM Upgrade (310654-05).
C-64 Keyboard (new)
C64 Cabinet (new)...
Interface Cables: #690 C64 to 1541/1571 disk drive.
#693 C64 to 3 pin RCA (eg. 1084) ......4..
1541/1571 Drive Alignment eaeeeeee
Super Graphics by Xetec a
Service Manuals for C64, C128, 1802, 1084SP, 1541
+ EMERGENCY STARTUP KITS +
Save a lot of time and money by repairing your own Commodore computer. All
chips are direct socket plug-ins (no soldering). Each kit includes all you need to
“start up"/revive your broken computer. Originally blister packed for the
government PXs worldwide, this series is now available to you. Total cost
savings per kit far exceeds purchasing chips on an individual basis
KIT #3 (Part #DIA 15) for C64
Symptoms: No power up ® Screen lock up ® Flashing colors * Game
cartridge problems
Contains: ICs. #PLA/82S100/906114, 6526, Commodore Diagnositician,
Fuse, Chip Puller, 8 RAMs, Schematic, Utility Cartridge & special
diagnostic test diskette with 9 programs
‘An $87.50 value for only $29.95
KIT #4 (Part #DIA 16) for C64
Symptoms: Control Port ¢ Sound ® Keyboard ® Serial device problems
Contains: ICs #6526, 6581, 8 RAMs, Commodore Diagnostician, Fuse, Chip
Puller, Basic Schematic, Utility Cartridge & special diagnostic test
diskette with 9 programs
A $79.80 value for only $29.95
KIT #5 (Part #DIA 17) for 1541/1571
Symptoms: Drive runs continuously ® Motor won't stop ® Read errors © No
power up
Contains: ICs #6502, 6522, Fuse Chip Puller, Basic Schematic, Commodore
Diagnostician & special diagnostic test diskette with 9 programs
An $70.10 value for only $29.95
ae! Send For Free Catalog
4 3 CHESTNUT ST., SUFFERN, NY 10901
Order Line 1-800-292-7445 Fax 914-357-6243
Customer Service: 914-368-4242 International Order Line: 914-357-2424
We Ship Worldwide Prices subject to change
Hours: 9-6 E.T. M-F 15% Restocking Charge
Tell a friend you've heard it through the Grapevine.
Circle Reader Service Number 145
REVIEWS
ARACHNOPHOBIA
A deadly spider from South
America has _ migrated
north, laying her loathsome
eggs in hundreds of homes,
schools, buildings, barns,
and cemeteries. In a frighten-
ingly short time, her off-
spring have hatched and
have begun to reproduce.
Thus begins the arach-
nids' reign of terror in commu-
nities across America. This
Disney arcade game for the
64 closely follows the basic
premise of the studio's hit
movie Arachnophobia.
Homes are overrun, citi-
zens terrorized, and whole
communities abandoned.
Residents have tried every-
thing to rid themselves of
the unwanted guests, but
nothing seems to stop
these creepy crawlers. The
eight-legged enemy is upon
us. It’s enough to make
your skin crawl.
As a last resort, the U.S.
Department of Agriculture
sends a frantic plea to
Delbert McClintock, owner
of the McClintock Infestation
Management Company.
McClintock is the inventor of
a patented insecticide, Toxi-
Max, which is said to be
strong enough to kill the
arachnids. Fearless Delbert
loads his bugmobile with
the lethal Toxi-Max and a
supply of bug bombs, and
sets out to free his country
from the invading horde.
You won't need a lot of
practice to get into the
swing of playing this game,
nor will you need to refer to
the instruction manual
throughout play. Disney
does recommend that you
make a backup of the
game's double-sided disk be-
fore playing and use the
backup for play. The game
is compatible with most
Fast Load cartridges, too.
Since there's enough variety
G-10
in Arachnophobia's sharp,
colorful graphics to keep
you playing for hours, you'll
find using a Fast Load car-
tridge will save you a lot of
time, since you must flip
sides during the game.
When you load Arachno-
phobia, you'll see the bugmo-
bile as it drives past homes,
sense of timing and your
joystick skills.
Spider webs are a real nui-
sance. Blundering into one
will slow you down to half
speed and make you more
vulnerable until you break
free.
A single spray of deadly
Toxi-Max is enough to kill a
Delbert McClintock is the nation’s last line of defense against
hordes of invading spiders from South America.
farms, schools, and cemeter-
ies. Pick the building you
want to enter; then use your
joystick to guide the bugmo-
bile there.
When you stop at a loca-
tion, the screen changes to
an interior scene showing
Delbert. Your mission is to
help him clear the infested
rooms by hunting down and
destroying all the spiders
and the egg sack that's hid-
den in every structure.
Sound easy? Don't be so
sure,
Spiders are everywhere.
They'll do all they can to
guard their egg _ sack.
Sneaky ones drop from the
ceiling to land on you; oth-
ers slither down web
strands and bite you from be-
hind. You'll be attacked at
ground level, too. Often, the
soldier spiders work in
groups, testing both your
COMPUTE NOVEMBER 1992
soldier spider within spray-
ing distance. It only takes a
few spider bites to slay you,
however, so keep your eyes
open for first-aid kits. These
will restore your strength.
There's at least one kit in eve-
ry building.
Don't forget you're wear-
ing heavy work boots, too.
You can stomp on some of
the creepy crawlers, conserv-
ing your limited supply of
insecticide.
The quickest way to clear
a room is to use a bug
bomb. You start the game
with only three of these, so
use them wisely. Other
items you find as the game
progresses are almost as
useful as bug bombs. Match-
es and aerosol cans can be
fashioned into nifty flame-
throwers, which have a bet-
ter range than your insecti-
cide sprayer. More impor-
tant, the homemade flame-
throwers can clear an entire
floor or ceiling of a room
with just one pass.
When you've cleared a
structure, you can safely re-
turn to the bugmobile. But
there's no time for you to
rest. The battle has only be-
gun! There are more build-
ings and towns needing
your bug-slaying skills. Just
guide your bugmobile to an-
other building and start exter-
minating spiders.
Every building in every
town is filled with hordes of
vicious spiders, defending
an egg sack. Only one struc-
ture in each town hides a
queen spider. The queen is
the same size as the original
South American spider.
You'll know this mean mama
by the distinctive yellow mark-
ings on her legs. Watch out!
She's tougher than her sol-
diers and can even bite af-
ter she’s been stunned. Slay-
ing her will transport you to
another city with yet another
queen spider to roust.
Allin all, this is a challeng-
ing game that's designed to
give you a real workout. If
you succeed in besting the
queen spider in every town,
you'll have saved the coun-
try and proved yourself a he-
ro. As a reward, the United
Nations will give you a se-
cret assignment in the Ama-
zon rain forest. The mon-
strous arachnids there will
make you wish you'd been
a little less successful.
To aid you during play,
the bottom of the screen dis-
plays status information.
There’s an amusing picture
of Delbert that monitors the
state of your health. It chang-
es from smiling to frowning
to screaming in pain, de-
pending on how many
times you've been bit. First-
aid kits will restore Delbert’s
smile.
Next to Delbert’s picture
The Gazette
Productivity
Manager
(Formerly PowerPak)
Harness the productivity
power of your 64 or 128!
Turn your Commodore into
a powerful workhorse, keep track
of finances, generate reports
in a snap, manage your
money in minutes—
all with the new 1991
Gazette Productivity
Manager! Look at all
your 64/128 Productivity
Manager disk contains.
ORDER YOUR
1991 GAZETTE
PRODUCTIVITY
MANAGER
TODAY!
GemCalc 64 & 128—
A complete, powerful, user-
friendly spreadsheet with all
the features you’d expect
in an expensive commercial package
(separate 64 and 128 versions are included).
Most commands can be performed with a single keypress!
Memo Card—Unleashes the power of a full-blown
database without the fuss! Nothing’s easier—it’s a
truly simple computerized address file. Just type in
your data on any one of the index cards. Need to edit?
Just use the standard Commodore editing keys. (MasterCard and Visa accepted on orders with subtotal over $20).
Finished? Just save the data to floppy. What could be | © © © ©
easier? DYES! please send me Productivity Manager disk(s)
($14.95 each),
Subtotal
Sales Tax (Residents of NC and NY please add appro-
priate sales tax for your area. Canadian orders, add
7% goods and services tax.)
——— Shipping and Handling ($2.00 U.S. and Canada, $3.00
surface mail, $5.00 airmail per disk.)
—— Total Enclosed
—Check or Money Order — MasterCard — VISA
|
|
|
Financial Planner—Answers all of those questions !
I
|
l
|
|
I
|
1 Credit Card No.
|
I
!
|
|
|
|
|
I
I
|
|
1
concerning interest, investments, and money manage-
ment that financial analysts charge big bucks for! You
can plan for your children’s education and know
exactly how much it will cost and how much you need
to save every month to reach your goal. Or, decide
whether to buy or lease a new car. Use the compound
interest and savings function to arrive at accurate
Signature
estimates of how your money will work for you. (Required)
Compute the answer at the click of a key! seme ee
Address
DON’T MISS OUT ON THIS | 2 Taw
Send your order to Gazette 1991 Productivity Manager,
324 W. Wendover Ave., Ste. 200, Greensboro, NC 27408.
POWERFUL WORKHORSE!
“1991
Gazette
Index
Everything’s included!
Features, games, reviews,
education/home applications,
programming, bugswatter,
feedback, and columns!
A superb interface includes pull-down
menus, help screens, and keyboard,
joystick, or mouse control. Features in-
clude super-fast searching and sorting
capabilities. An options screen allows
you to choose text colors, drive num-
ber, and input device. And there's full
documentation on disk.
Choose from three modes of opera-
tion—browse for quick scanning, view
for detailed information and descrip-
tions, and edit for adding items from
upcoming issues—and print to any
printer. There’s even a turbo-load op-
tion for maximum disk-access speed.
ORDER YOUR
1991 GAZETTE
INDEX TODAY!
(MasterCard and Visa accepted on
orders with subtotal over $20.)
To order, send $7.95 per disk, the
quantity of disks ordered, check or
money order,” your name and com-
plete street address:
1991 Gazette Index
324 West Wendover Avenue
Suite 200
Greensboro, NC 27408
*Please add $2 shipping & handling ($5 foreign) for
each disk (residents of NC, NJ, NY please add appli-
cable sales tax; Canadian orders, add 7% goods and
services tax).
All payments must be in U.S. funds. Please allow 4
weeks for delivery.
REVIEWS
is an indicator showing how much Toxi-
Max insecticide remains in your spray
tank. It refills automatically whenever
you return to the bugmobile. (Beware!
You can leave a building at any time
for refills, but all the spiders will return
while you're out.)
A counter at the bottom of the
screen shows how many bug bombs
you have. You start with three but earn
another every time you clear a struc-
ture. Last, but definitely not least, is the
Bugometer. This compasslike device in-
dicates the direction in which to travel
to find the queen in each city.
| prefer to play Arachnophobia with
the sound turned down, but my son
likes to hear Delbert’s bug-fighting com-
ments and the sizzle of his flamethrow-
er. | like to go through houses system-
atically rousting arachnids; he zeroes
in on the queen. Even though our
styles vary, however, we both agree
that this is the best arcade game we've
played in a long while.
MARTI PAULIN
Commodore 64 or 128—$29.95
WALT DISNEY COMPUTER SOFTWARE
500 S. Buena Vista St.
Burbank, CA 91521
(818) 841-3326
Circle Reader Service Number 341
FUN GRAPHICS
MACHINE
Fun Graphics Machine is a great way
to create and manipulate graphics and
hi-res screens on a 64. My introduction
to the program was a free demo that’s
available on QuantumLink. | was
amazed at the ways that | could work
with the designs on the screen: flip,
flop, reverse, stretch, shrink, crop, ro-
tate, fasten, copy, and print the results.
The demo won't allow you to save and
print features, but the asking price for
the registered version makes it a real
must-have bargain. The reference man-
ual is the first good feature.
The spiral-bound manual lies flat, so
you can really use it. Some of the in-
structions are duplicated, but that
stops the page flipping when you
need to refer back to some detail that
has slipped your memory.
The manual itself was produced
with FGM. It even shows step-by-step
instructions of how various pages
were composed. This is not a drawing
program. It doesn't have lines, circles,
or squares, and there are no colors—
just a white screen (or rather, three
white screens) to work with.
The program uses color in a useful
way. The cursor and borders change
color to let you know what mode you're
in. Blue cursor is text, gray is grab, pur-
ple is adjust, and so on.
You work on a 40-column screen,
and the screens can be linked both
across and down. By combining two
screens across, you have your 80-col-
umn format for printing a full page. You
can use a third screen as a
workplace. Link the screens down for
as many as you need. Print a banner
of any length.
Save your work with a simple meth-
od of coding, and then use one instruc-
tion to print all of your work.
FGM is really a collection of pro-
grams, not just one. With the program
disk in one drive, it'll recognize the pres-
ence of any other two drives. Create
lets you do your own thing. Demo runs
demos that are available on the pro-
gram disk or replays those that you cre-
ate and save. Clip-Art uses artwork
found in other programs like The Print
Shop, The Newsroom, and Doodle.
Printer sends your work to your printer.
You can print your work to disk in
files that others can view without hav-
ing to run FGM. You can design and
send greeting cards or draw screens
0 be used as titles on your VCR.
FGM has its own department on Q-
Link. Download a file with 50 different
fonts, and you can type in just about
any style that you like. FGM contains a
customizer, which will design or modi-
y a font. Updates are always being
added. If you have a question, some-
one online will have the answer, and
samples of what users have done are
always interesting to study.
If you're using a 128 and have the re-
set switch, you'll discover something
remarkable. Suppose you're running a
program in 64 mode and see a graph-
ic on the screen that you'd like to
save. Hit the reset switch. The program
will be gone, but then load and run
FGM. On most occasions the graphic
will be available on one of FGM's
screens. Now you can save it, grab
part of it, and paste it on another
screen. Have fun; that's what the pro-
gram is all about—having fun with
graphics.
Since you can edit at the pixel level,
you can do some finely detailed work,
and a smoothing technique takes away
some of the rough spots on captured
pictures. With the overlay method of
grabbing and pasting, you can design
and save different templates and then
use them for various projects. A simple
template with a musical symbol font
and score lines is useful for writing mu-
sical scores. A grid pattern can be over-
laid with needlework designs.
Playing with FAM can become addic-
tive. Searching for different graphics to
manipulate, adding new eyes to a
face from a Print Shop cartoon, using
part of a picture as the cover for a greet-
ing card, and designing your own let-
terhead are just some of the fun you
can have working with graphics.
In text mode you can link two
screens across, use word-wrap, select
a font, set the margins, and type your
document. The size of the cursor can
be changed with a single keypress.
And with that size change, the size of
your font changes, all the way to a full
screen.
Great graphic work on the screen
can be work wasted if you can't send
it to a printer. FGM supports most print-
ers, and it gives you the option of tell-
ing your printer to perform various ef-
fects. You can select dots-per-inch
density; single or double height; single,
double, or triple width; various mar-
gins; and so on.
Try printing the same screen with dif-
ferent options, and you'll be surprised
by the results. Not only does FGM let
you design and work with your own
graphics, but you have the ability to
load files from other programs. The
possibilities are endless. You have com-
plete control over every pixel on the
screen. Artwork can be stretched,
shrunk, slanted, rotated, overlaid with
shadows, and more. By using two
screens and flipping between them,
you can create simple automation for
your demos.
Learning to use the program can
take time, but you don't have to learn
it all at once. If you go too far, a cou-
ple of keystrokes will always take you
back to where you started. There’s no
need to remember filenames.
Selections are made from a screen
menu, and a disk directory is always
available. You can use up to three
drives with FGM, and the program will
ask you which one you want to access.
You can customize your program disk
so that it will default to your particular
printer.
If you'd like the cursor and borders
0 be different colors, you can change
hem. Copy the program disk and
hen customize the copy with your
most used fonts, character sets, and
graphics for a program default to suit
your own needs.
FGM is always being updated on Q-
Link. The author, whose Q-Link handle
is RonH8, is often online in the Starving
Artists' Cafe. He is always offering new
hints and suggestions.
Q-Link members can download an
FGM demo and try it before buying.
But once you try FGM, you'll be
hooked on graphics—and spoiled. No
more having a graphic that won't fit in
the space you need on your docu-
ment. With FGM you can copy it,
shrink it, expand it, paste it, and then
smile at the results.
Discover that your 64 is a real fun ma-
chine. Then surprise your friends with
your newly discovered artistic talent.
You won't go wrong with Fun Graphics
Machine.
ESTHER OLSON
Commodore 64 or 128—$24.95, plus $3.50 ship-
ping and handling
THE FGM CONNECTION
P.O. Box 2206
Roseburg, OR 97470
(503) 673-2234
Circle Reader Service Number 342
DWEEZILABEL
If Dweezil is anything like the program
that bears his name, he must be one
clever dog. Once again, Dave Fer-
guson, GEOS programmer extraordi-
naire and human who lives with Dweez-
il, has released an intriguing and useful
GEOS program with a picture of a dog
in a party hat on the label.
DweeziLabel is everything a GEOS
user could want in a label program.
Well, to be fair, it's everything Ferguson
would want in a label program. He'll be
the first to admit that the program
evolved more as an answer to his spe-
cific needs than as a general-purpose
label maker. Even so, it includes
enough features to function as a
minidatabase, a minipublisher, and
who knows what else.
In the course of running Quincy Soft-
works, Ferguson needs to keep track
of customers from all over the world
and to keep notes on what they've or-
dered, how much they've paid, and so
on. DweeziLabel emerged as his ideal
multipurpose low-end business applica-
tion. You can find it on Dweezil Disk
#3, which includes MYgeoDIARY and
geoWORDS.
Since Ferguson runs his business ex-
clusively with GEOS products, data
from DweeziLabel is compatible with
applications such as geoMerge and
geoCalc. Text scraps and numeric da-
ta can be neatly clipped in formatted
chunks to fit those GEOS applications.
An even better example of DweeziL-
abel's versatility is the way it handles da-
ta. The program works with files of up
to 50 records, similar to a card file da-
tabase, These files can be created
from within DweeziLabel, geoWrite, or
geoFile. Ferguson wanted room in
those records for more than just
names and addresses. He wanted to
keep notes about what products peo-
ple had ordered and the amount of
Can Your
Computer Make
m>) YOU
4\"$1,000,0007
» WITH LOTTERY PC vile NEXT TICKET
COULD BE WORTH MILLIONS!
LOTTERY uses the raw power and storage of your
Computer to determine and refine the number saiecion
methods that will win the various lottery games
play. Don't be limited to the one or two methods tt t
other programs use, they might not work in your state.
There is no better system available!
Join the growing list of winners using our system.
SPECIFY:
Lottery 64(C64/128)
Lottery PC
IBM PC/XT/AT and compatibles
Commodore64/128 & Plus/4 are esse!
trademarks of Commodore Int
IBM PC/XT/AT ate registered trademarks of
International Business Machines Inc
To order, send 20 95 for each plus $3.00 postage &
handling per order to
(Illinois residents add 6% sales tax
(Grders outside North America add $3.00)
VISA
C.O.D. orders call:
(708) 566-4647
Superior Micro Systems, Inc, D)
aS 26151 N. Oak Ave. (ae S
Mundelein, IL 60060 Ys,
s\ \—4
Circle Reader Service Number 221
DISKS O'PLENTY INC
7958 PINES BLVD. SUITE 270A
PEMBROKE PINES FL 33024
(305) 963-7750
Call or write for free descriptive catalog of
C64/128 Public Domain & Shareware
Choose from over 900 Disks
Adult list of over 50 Disks available
to those 18 or over.
021MU SID MUSIC UTILITIES
019GR_ PRINTSHOP UTILITIES
019ED JRHIGH EDUCATION
O62ED HIGHSCHOOL EDUC.
033ED TYPING / SPANISH
031ED COMPUTER SCIENCE
010UT PIRATES TOOLBOX
119GA. FOREIGN ARCADE
022GA CASINO-BOARD GAMES
021GE GEOS FONTS
002MS LOTTERY PROGRAMS
003MS COLLECTORS CORNER
Circle Reader Service Number 253
Choose 6 for $5.00
LIMITED OFFER
THE AMERICAN HEART
ASS@IATION
MEMONAL OE
US OOSISAP SN)
2.
@aAmericanteart Association
This space provided as a public service.
NOVEMBER 1992 COMPUTE G-13
REVIEWS
money they'd paid, so he added sev-
eral extra data lines for that express pur-
pose, data that the labeler part of the
program doesn't print unless you want
it to. So far, that's pretty tame stuff, but
this is no wimpy Rolodex.
Tucked away in the Text menu is a
series of search commands that let you
sail through your data with ease. The
six possible lines of data could be
names and addresses. You could
store shoe sizes and a recipe for Pan
Galactic Gargle Blasters in there if you
wanted, but DweeziLabel restricts you
to the number of spaces you can use.
In fact, aside from the size limit and the
lack of the trivial feature of saving a
graphic to a record, DweeziLabel can
hold its own with geoFile for useful-
ness. As | said before, it even creates
merge files for geoMerge.
But, hey, what about labels? Yes,
DweeziLabel does labels, any kind of
labels. It produces any kind of printed
output that is 2 inches tall, for that mat-
ter, on pages up to a full 11 inches
tall. Using a technique called layering
in the work window, you can put togeth-
er combinations of graphics and text to
create just about any kind of label you
can imagine.
By paging through the database,
you can select label text that can be
modified however you like. You can
use any GEOS font you might have
available (on either disk, up to the file
selector's limit—no six or seven font
maximum here) and any style, includ-
ing reverse. The work window is conven-
iently sized to fit Ferguson's premier
graphics desk accessories, NewTools
and geoStamp (available on other
Dweezil Disks). This means you can
stamp yourself a border around a label
or curve and angle graphics and text
to your heart's delight.
All this power doesn't come as easi-
ly as it could, however. The documenta-
tion provided on disk is extensive but
a bit thin in spots. The entire process
of layering a graphics label is not par-
ticularly intuitive, which is not necessar-
ily bad, but a step-by-step tutorial for
this process would save the user
some trial and error.
The words scrap and label appear of-
ten, sometimes meaning one thing and
sometimes another. While these varia-
tions are defined in the short glossary,
G-14. COMPUTE NOVEMBER 1992
they do get confusing. Maybe since
this program has become second na-
ture to Ferguson, he's lost the perspec-
tive of a neophyte. The documentation
should've been written from the per-
spective of the user who hasn't a clue
about how this program operates—but
it wasn’t. As a result, this program
runs the risk of being tossed aside af-
ter a half hour of frustration by casual
users who don't care to figure out
things on their own.
That would be a shame. DweeziLa-
bel is too powerful an application to be
missed by anyone who has some hon-
est-to-goodness work to do with
GEOS. The results are worth the extra
effort it takes to master the intricacies
of the interface. Heck, when used in
conjunction with NewTools and geo-
Stamp, DweeziLabel might be, as the
ads claim, the “hottest GEOS label pro-
gram to come along in years!”
STEVE VANDER ARK
Commodore 64 or 128, GEOS—$15.95
QUINCY SOFTWORKS
9479 E. Whitmore Ave.
Hughson, CA 95326-9745
Circle Reader Service Number 343 a]
TYPING AIDS
MLX, our machine language entry pro-
gram for the 64 and 128, and The Auto-
matic Proofreader are utilities that help
you type in Gazette programs without
making mistakes. To make room for
more programs, we no longer include
these labor-saving utilities in every is-
sue, but they can be found on each Ga-
zette Disk and are printed in all issues
of Gazette through June 1990.
If you don't have access to a
back issue or to one of our disks, write
to us, and we'll send you free printed
copies of both of these handy pro-
grams for you to type in. We'll also in-
clude instructions on how to type in Ga-
zette programs. Please enclose a self-
addressed, stamped envelope. Send a
self-addressed disk mailer with appropri-
ate postage to receive these programs
on disk.
Write to Typing Aids, COMPUTE's
Gazette, 324 West Wendover Avenue,
Suite 200, Greensboro, North Carolina
27408.
In addition to the type-in pro-
grams found in each issue of the
magazine, Gazette Disk offers bo-
nus programs. Here's a special
program that you'll find only on
this month's disk.
BASSEM 128
By Fernando Buela Sanchez
Querétaro, QRO
Mexico
Symbolic label-based assem-
blers are the most convenient
way to write machine language
programs. You enter instructions
as source code, and they are lat-
er assembled into object code.
Rather than using memory loca-
tions, you can use meaningful la-
bels.
Many programmers have
used—and raved about—Bas-
sem for the 64, and now there's
an improved version for the 128.
Bassem 128 works in conjunction
with BASIC 7.0, and because of
the 128’s larger memory, it can
store larger source code pro-
grams, With the addition of new
commands, you can also devel-
op your programs with less effort.
Bassem 128 and complete
instructions are available only on
disk. You can have this program
and all the others that appear in
this issue by ordering the Novem-
ber Gazette Disk. The price is
$9.95 plus $2.00 shipping and
handling. Send your order to Ga-
zette Disk, COMPUTE Publica-
tions, 324 West Wendover Ave-
nue, Suite 200, Greensboro,
North Carolina 27408.
HEL PREVENT
HEART ATACK
WITH A STROKE
Any type of aerobic exercise
program can help reduce your
risk of heart attack and stroke.
The only hard part is diving
in. To learn more, contact the
American Heart Association,
7272 Greenville Avenue, Box
47, Dallas, TX 75231-4596.
You can help prevent heart
disease and stroke. We can
tell you how.
American Heart
Association
This space provided as a public service.
© 1992, American Heart Association
DISK MAGAZINES FOR 64 & 128
Great programs & articles from both sides of the Atlantic.
C64 ALIVE! is U.S. produced. LIGHT DISK and clubLIGHT are UK produced.
C64 ALIVE! Sample disk $3 (£1.50): S issues ending 12/92 $20 (£10);
6 issues starting 1/93 $25 (£12.50)
clubLIGHT Single issue $5 (£2.20): __12 issues starting 9/92 $50 (£23.40)
LIGHT DISK (only 4 issues) 8 Disks $30 (£15)
LIGHT DISK and clubLIGHT are for 64/128 — C64 ALIVE! is 64 only
FOR DELIVERY:
IN U.S.: Jack Vander White, C64 ALIVE!, P.O, Box 232115, Sacramento, CA 95823
IN UK: Datasphere Publications, 7 Fallowfield Close, Valley Drive, Norwich, NR1 4NW
Outside North America and UK write for prices.
Circle Reader Service Number 154
({@ GRAFIX GALORE
SS Original Printshop Graphics }--—¢
Over 80 super graphics to add sparkle to your Printshop projects! Everything from
sports to spys and pirates to pizza.
Send $11.95 (inc. s/h) add $3 if outside N. America. Specify C-64 or IBM version.
— REQUIRES PRINTSHOP OR GRAPHICS COMPATIBLE PROG. —
Cel CLIP ART CUPBOARD
P. O. BOX 317774 ® CINCINNATI, OH 45231
SEC CHECK REGISTER 128
Manages personal or small business checking in a fast/efficient manner. Fast data entry,
many bank transactions predefined. Unlimited recurring payees. Up to 750 active file
transactions. History files allow an on going record. Up to 999 reference (account)
numbers. Easy editing with many powerful commands. Reports printed by, Outstanding
Transaction, Transaction, Reference Number, Reference Number & Date.
Random Reference Number, or Payee. Print any type of personal or for
Supports all 15XX and Hard Drives. Compatible with all currently available DOS cartridges
and ROM chips. Custom video fonts. Spiral bound lay flat manual and much more. System
requirements: C=128 with 80 column RGB or Mono. monitor. FREE with each order SEC
Financial Cale. 128 TO ORDER: Send Check or Money Order for $24.95 + $3.00 S&H to:
SPARKS ELECTRONICS, 5316 So. 9th, St. Joseph, MO 64504-1802
Circle Reader Service Number 252
Commopore 64 PuBLic DomAIN
Highest Quality Since 1987*
Games, Education, Business, Utilities, GEOS, Music, Graphics &
More. As low as 90¢ per collection. 1 stamp for complete catalog
or $2.00 for catalog AND 30 sample programs (refundable).
24 hour shipping.
64 DISK CONNECTION
(* Formerly RVH Publications)
Circle Reader Service Number 254
KeyDOS ROM Version 2 is here!
The KeyDOS ROM is a chip for the empty socket inside your C128 that adds more than 40
powerful features. KeyDOS is available instantly as soon as you switch on your 128!
KeyDOS is loaded with useful tools to simplify file access on multiple drive systems without typ-
ing file names—all major DOS functions included. Select multiple files for copying, viewing,
printing, renaming or scratching. ASCII/CBM/Screen code converter. Full support for 1581
subdirectories. Built-in RAMDOS for REUs up to 2MB. New GEOS SupeRBoot
Alarm clock. Disk editor. Powerful debugger.
Only $32.50. Satisfaction Guaranteed! Write for more information.
Enhance your system with the speed and convenience that KeyDOS provides!
Antigrav Toolkit, PO Box 1074, Cambridge, MA 02142
Shipping outside of US, Canada and Mexico add $3
Circle Reader Service Number 244
Questions and
answers
about computer
memory,
onscreen messages,
G-16
FEEDBACK
More Memor
What exactly is the purpose
of expanding the 64's memo-
ry, using cartridges such as
the 1750? On an IBM, certain
amounts of memory are re-
quired to use certain soft-
ware, Is there any software
for the 64 that requires more
memory than the 64 has?
JOHN VEILLEUX
ORRINGTON, ME
There's no software that we
know of which requires more
memory of the 64 than what
is native to the machine. On
the other hand, several soft-
ware packages, such as
GEOS, can make use of RAM
expansion if it's available.
Many programs—games in
Pparticular—use the disk drive
for virtual storage when either
the program or its data is too
large to be loaded and main-
tained in memory at one time.
If more of the game can be
stored in memory, then the
game runs faster and the us-
er doesn't have to wait for the
computer to access the data
stored on disk.
Large spreadsheets and da-
tabases are two reasons why
business applications benefit
from larger memories. Pro-
grammers can use more mem-
ory, which allows for code
that is more highly developed
and interpreters or compilers
that are more sophisticated.
More memory is also a boon
to graphics, especially anima-
tion, where several scenes
must reside in memory at
once for smooth screen up-
dates. A computer can do
great things with digitized
sound, but a lot of storage
space is needed to contain
reasonable sound samples.
Where speed isn’t a critical
factor, disk drives are a prac-
tical means of extending the
64's 64K limit. But where
speed and quick responses
are needed, more memory is
very handy indeed.
COMPUTE NOVEMBER 1992
Flashing Message
I've been working on some
games for the 64 and have
run up against a problem.
There are certain messages,
such as DANGER, that I'd
like to have flash on the
screen. How do | do this?
CAL BODWIN
GREENSBORO, NC
You could flash a message in
BASIC by alternately printing
in normal and reverse mode
again and again. The pro-
gram would have to stop
while the message blinked,
however. When the program
continued, the flashing would
stop.
Here's a machine lan-
guage solution. The following
program will flash in black
any message that is printed
on the screen. Other colors
will print normally.
10 FOR A=828 TO 914: READB:
POKEA,B: C=C+B: NEXT: IFC
<>8545THENPRINT ‘DATA
ERROR”: STOP
15 POKE 6,0:SYS828
:POKES3281,1: POKES3280,1:
PRINT {CLRH3 DOWN}15
RIGHT}BLK}DANGER!”
20 DATA 120,169,81,141,20,3,
169,3,141,21 r
30 DATA 3,169,0,141,147,3,
141 ,148,3,88 G
40 DATA 96,206,148,3,16,58,
169,10,141,148
50 DATA 3,169,0,133,2,133,4,
169,4,133
60 DATA 3,169,216,133,5,162,4,
160,0,177
70 DATA 4,41,15,197,6,208,9,
77,2,41
80 DATA 127,13,147,3,145,2,200,
208,236,230
90 DATA 3,230,5,202,208,227,
173,147,3,73 { -
100 DATA 128,141,147,3,76,
49,234
If you want a different color
to flash, poke its color code
(0-15) into location 6. The
speed of the flashing can be
adjusted by poking location
855 with a number from O to
255; the smaller the number,
the slower the flash rate. SYS
828 enables the flashing mes-
sages. To stop the flashing,
press the Run/Stop key and
tap the Restore key.
Sequential Files
Could you please explain
what a sequential disk file is
and how to create one?
JACK DEMEANOR
CHARLESTOWNE, MA
A sequential file provides a
way of keeping information
separate from the program
that uses it. This allows you to
create general-purpose pro-
grams that can act on differ-
ent sets of information. In-
stead of writing one program
to keep track of a stamp col-
lection, for example, and a
second program to list a col-
lection of rare books, you
could write (or buy) a general
inventory program that stores
data in sequential files. One
file would contain notes
about stamps, and another
would have the data about
the books.
A single program could han-
dle two or more different files.
Sequential files are like DATA
statements because you start
reading at the beginning and
continue until the end.
To create a sequential disk
file, open it for writing, write
one or more pieces of informa-
tion to it, and then close the
file. It's important to close a
file when you've finished us-
ing it; otherwise, some of the
information will be lost.
Reading the file requires
an operation similar to that for
writing. Open the file for read-
ing, read the information, and
then close the file.
Here's a short program
that creates a sequential file.
10 PRINT “ENTER THREE
NAMES”
20 PRINT'(PRESS RETURN AFTER
EACH ONE”
30 PRINT“OR SEPARATE THE
FIRST TWO WITH COMMAS)”
40 INPUT A$,B$,C$
50 OPEN 1,8,2,‘NAMES,S,W”
60 PRINT#1,A$: PRINT#1,BS:
PRINT#1,C$
70 CLOSE1
The three numbers after
the OPEN command in line
50 are the logical file number,
the device number, and the
channel. The file number can
be any number that’s not al-
ready being used by a periph-
eral. If you had previously
opened a file to printer with
OPEN 1,4 (file 1, device 4),
you couldn't use logical file
number 1 for opening the
disk file. The logical file num-
ber is important because it's
the number used to read
from and write to a file.
The second number after
OPEN is the device number
(a single disk drive is device
8). The third number is the
channel to be used, There
are 16 disk channels, num-
bered 0-15. Channels 0 and
1 are used for loading and sav-
ing, and 15 is the command
channel, so that leaves chan-
nels 2-14 for sequential files.
It doesn't matter which chan-
nel you use, as long as it's
not being used by another
disk file. You can open more
than one disk file, but each
must have a different logical
file and channel number.
The “S,W" after the file-
name means that the file will
be sequential (S) and that
you'll be writing (W) to. it.
Note the five commas in line
50; they're all necessary to
separate the various parts of
the OPEN command.
When the file is open, the
red light on the front of the
1541 (or green light on the
front of the 1571) drive will
turn on and stay on until the
file is closed. In line 60,
PRINT# writes information to
the file. It must be followed by
the logical file number, a com-
ma, and the information. If
line 5060 had been OPEN
5,8,3, line 60 would have
used PRINT#5 instead of
PRINT#1. Line 70 closes the
file. CLOSE is followed by the
logical file number.
Now that we've written a
file called NAMES, here's a
program to read the data.
10 OPEN 5,8,4,""NAMES,S,R”
20 INPUT#5,A$,B$,C$
30 PRINT A$:PRINT B$:PRINT C$
40 CLOSE 5
Since we're reading the
file, there's an R, rather than a
W, at the end of the OPEN
command in line 10. In this in-
stance, we're using logical
file 5 and channel 4, although
we could have used 1 and 2
as in the first program. IN-
PUT# reads information from
the file. Like PRINT#, it’s fol-
lowed by the logical file num-
ber and a comma. GET# acts
like INPUT#, but it reads a sin-
gle character at a time.
The programs have similar
structures: They both INPUT
from one source and PRINT
to another. The first used IN-
PUT/PRINT# to read the key-
board and write to a file,
while the second used IN-
PUT#/PRINT to read from the
file and write to the screen.
Double-Width Printing
| use SpeedScript with my
Star NX-1000C printer, but
the PRINT command for dou-
ble-width characters does not
work. Is there a way to modi-
fy the program to use these
commands, or should | use a
Ctrl-£E command?
DON SYWASSINK
SIERRA VISTA, AZ
A Cirl-£, or stage 2, command
should do the trick. With
SpeedScript, you can define
printkeys that will print whatev-
er codes your printer uses for
features such as double-width
or emphasized mode.
To define a printkey, at the
top of your document press
Ctrl-£ (or Ctrl-3), followed by
the key that you want to as-
sign as the printkey. Then en-
ter the equal sign (=) and the
ASCII value to be substituted
for the printkey during print-
ing. Many systems use an es-
cape (ESC) code to break out
of the word processor, and
then certain ASCII values to
activate various print modes.
For convenience, Speed-
Script has already set four
printkeys. Printkey 1 is de-
fined as the escape key (AS-
Cll 27). (With some printers
and interfaces, you must
send two escape codes to by-
pass the emulation.) Printkey
2 has a default value of 14,
which is the ASCII code that
puts most printers into double-
width mode. Therefore, to
switch to double-width mode,
press Ctrl-£ and then press 1,
press Ctrl-£ again, and then
press 2. Next, enter the text
you want printed in double-
width mode.
Printkey 3 has a default val-
ue of 15, which turns off dou-
ble-width on some printers
and selects condensed
mode on others. Printkey 4 is
defined as 18, which selects
reverse field on Commodore
printers and some interfaces
in emulation mode. On other
printers, it switches to con-
densed mode. (See your print-
er manual for exact codes.)
To print the word WIDE in
double width in the following
example and then revert
back to normal printing, your
screen should look like this.
This is FAWIDER printing.
Remember, some printers re-
quire two escape codes. In
that case, you would have
in front of the word WIDE.
Codes can vary from printer to
printer, so check your manual
for specific values. a)
How to create
‘and use sequential
double-width printing
with SpeedScript
NOVEMBER 1992 COMPUTE
G-17
When programming,
there’s usually
the fastest way or the
most compact
way. Here’s an attractive
compromise.
G-18
MACHINE LANGUAGE
Jim Butterfield
CODING CHOICES
Recently, | saw the following
message posted on a comput-
er network: “| have a value in
a single byte, and | want to
calculate the remainder after
dividing by 5. What code do
you suggest?"
The remainder after division
is often called the modulo; |
don't know why the user want-
ed to calculate this, but there
are several methods available
that we can try. In this column,
we'll discuss a couple of meth-
ods for solving the problem,
and we'll also demonstrate the
tradeoff between a program's
speed and size. While we're at
it, this might be a good time to
gain some insight into hexa-
decimal numbers.
The standard method for
solving this problem would be
to use a conventional division
routine that would yield both
quotient and remainder.
There are methods, however,
that are designed either to
achieve maximum speed or to
utilize minimum memory. One
rarely finds a piece of code
that offers both. Almost all cod-
ing is a tradeoff between
these two extremes.
A sample program called
MODS, printed at the end of
this column, provides us with
three approaches. The first rou-
tine offers speed, the second
efficiency, and the third is a
compromise of the two. You
may want to examine the
code of each one.
The fastest method is to
look up the remainder in a ta-
ble. Since a one-byte number
can contain only 256 possible
values, we can do this with a
table of 256 bytes. This meth-
od couldn't be faster. We put
the original byte into the Y reg-
ister, and do the translation
with a single instruction: LDA
TABLE, Y. You'll find this at hex
address 2015 in the program
at the end of this column.
The method wastes memo-
COMPUTE NOVEMBER 1992
ry, since we must devote 256
bytes to hold the table. The ta-
ble could be loaded in, but it's
quicker to calculate it when
the program starts. You'll see
this one-shot table build at ad-
dresses $2000-$2011. If only
a few values were to be cal-
culated, we couldn't justify
this extra work. On the other
hand, if there were thousands
of values, this program would
be speed efficient.
If the byte in question con-
tains a value of 5 or more, we
could subtract 5 and then re-
peat. Eventually, we end up
with a value of 0 to 4; that's the
remainder, The calculation
loop, at addresses $202C-
$2033, requires only four in-
structions: compare to 5,
branch out if less (BCC), sub-
tract 5, and branch back to
the loop (BCS). Serious stu-
dents of code will be able to
explain why we don't need to
set the C (carry) flag before
subtraction and why the BCS
(Branch Carry Set) command
always branches.
The code is compact, fitting
within eight bytes, but it could
be slow. Since the original val-
ue could be as high as 255,
the loop might be repeated as
many as 51 times!
Most programs trade off
speed against size. Programs
that need to be fast will unfold
their loops; this saves time but
calls for more instructions. In
this case, it really doesn't mat-
ter much. We have plenty of
memory, and even the slowest
method runs plenty fast for our
purposes.
| wanted to add one more
method, however. This third
piece of code is moderately
compact and fast. More impor-
tant, ithelps to show an interest-
ing aspect of hex numbers.
It takes only a glance at a
decimal number to tell wheth-
er it divides evenly by 5 or
what the remainder would be.
The last digit of the number
tells the story (5 is a factor of
10, the base of decimal num-
bers). That's not true of hexa-
decimal numbers. The last dig-
it will signal whether the num-
ber is divisible by 2, 4, 8 or 16,
but it won't help you on the
mod-5 question. Hex numbers
such as 20 and 65 seem as if
they should divide by 5, but
they don't. Their decimal val-
ues are 32 and 101.
There is, however, a quick
way to inspect hex numbers to
see whether or not they will di-
vide by 5. It's similar to the
method we use with decimal
numbers in testing whether or
not a number divides by 9 or
by 3. Add the decimal digits to-
gether; the total will have the
same mod-9 value as the orig-
inal number. Thus, decimal val-
ue 1234 will have a remainder
of 1 when divided by 9. Calcu-
late 1424+3+4, giving 10, and
the answer is a snap. The
same holds true for division by
3, which is a factor of 9.
In hex, the sum of digits
tells us about division by 15 or
either of its factors (3 or 5), So,
hex 23 will divide exactly by 5,
and hex BC would have a re-
mainder of 3. We know this be-
cause 2+3 gives 5, B+C or
11+12 gives 23, which would
leave a remainder of 3 when
divided by 5,
How would we do this in a
computer program? A hex dig-
it corresponds to four bits. We
can extract the value of the
high hex digit by shifting the
number right four places. We
extract the low digit value with
a simple AND #$0F. Add
them together, and we have
the sum of the two hex digits
within a byte.
This sum cannot be greater
than 30 (decimal), so we
know that the simple subtrac-
tion of method 2 will now loop
not more than six times. Quite
an improvement from a possi-
ble 51 times around the loop.
Four LSR (Logical Shift
Right) commands extract our
high hex digit. We store the re-
sult and then call back the original val-
ue; masking with AND #$0F isolates the
low digit. Add them together (don't for-
get to clear the carry flag first with CLC),
and we can repeat the subtract loop of
method 2. The whole thing goes from
hex address 2040 to 205B. That's a bit
longer than the previous method, but
there's quite a speed advantage.
The program works on almost any
Commodore 8-bit computer. It first
pokes the machine language code into
place. Then it does the mod-5 calcula-
tion four times.
The first calculation is in BASIC, fol-
lowed by each of the three above meth-
ods. The values used for the calculation
are from ROM, hex addresses E000
through E006. You'll get the same re-
sults each time, of course.
You might want to use a machine lan-
guage monitor to inspect the MODS
code more closely. That'll give you an
even better understanding of what's hap-
pening in the different routines.
100 DATA 162,0,160,0,152,157,
0,33,200,192,5,144,2,160,0
110 DATA 232,208,242,188,0,224,
185,0,33,9,48,32,210,255
120 DATA 232,224,7,144,240,169,
13,76,210,255
130 DATA 162,0,189,0,224,201,5,
144,4,233,5,176,248,9,48
140 DATA 32,210,255,232,224,7,
144,235 ,176,226
150 DATA162,0,189,0,224,72,74,
74,74,74,141,255,32,104
160 DATA 41,15,24,109,255,32,
201,5,144,4,233,5,176,248
170 DATA 9,48,32,210,255,232,
224,7,144,220,176,186
200 FOR J=8192 TO 8295
210 READ X:T=T+X
220 POKE J,X
230 NEXT J
240 IF T<>12902 THEN STOP
400 PRINT “‘BASIC:”
410 FOR J=57344 TO 57350
420 X=PEEK(J):PRINT X-5*INT(XA);
430 NEXT J
440 PRINT
450 PRINTTABLE LOOKUP:”
460 SYS 8256
470 PRINT ‘SUBTRACT LOOP:”
480 SYS 8231
490 PRINT “HEX CHECKSUM:”
500 SYS 8256
510 PRINT “END.” a)
C64/128 PUBLIC DOMAIN SOFTWARE
REQUEST FREE CATALOG or send $2 for sample disk and catalog (RE-
FUNDABLE). Categories include education, utilities, games, business,
PRINT SHOP graphics, pre-tested programs and more. Rent for 75¢ or
buy as low as $1.00 per disk side or for 80¢ for 70 or more, $20 order
gets 4 free disks of your choice.
NEXT DAY SHIPPING!
SINCE 1986
& CALOKE INDUSTRIES (Dept. GK) -=7ee
t PO BOX 18477, RAYTOWN, MO 64133 —
Circle Reader Service Number 181
Commodore Accessories & Necessities
Ribbons! M3 Mouse
MPS 801 - 802 - 803 - 1525 - 1526 - 1000 - Modems
1200 - 1230 - 1250 Joysticks
Commodore Printer (Comm. & PC Comp.) Icon Controller
C 64 C Computer * 1541-II Disk Drive: Cables
1802 Monitor Power Supply
SOFTWARE: Educational - Productive - Fun » Commodore-Amiga Authorized
Dealer & Service Center - 24-Hour Turnaround on Repairs - CALL for PRICING
= ELECTRO-TECH ELECTRONICS eB
677 East Main Street - Ventura,CA93001 + 805-648-5417
Circle Reader Service Number 148
Same Old Ad - Great New Price!
NowgetCalcll, theleading C64 spreadsheet,
The Fastest | for the special year-end price of $24.95,
S&H included! The best now costs less - so
Spreadsheet order now, while the price is right!
for the US, CAN: $24.95 ($US/$CDN), check/money order
Commodore € OVERSEAS: $24.95 US, Intemational Money Order fr
PANKHURST PROGRAMMING mn . Box 49135 + Montreal « Quebec * Canada * H1N 376
Circle Reader Service Number 152
Realistic Nuclear Attack Sub Simulation
C64 or 128 In 64 Mode
Command Missions Under The Arctic Ice,
Hunt Russian Typhoons In The North Sea
Requires C64 GEOS 1.3 or 2.0
$19.95 Check or Money Order
VMC Software PO Box 326
Cambria Hts. NY 11411
Circle Reader Service Number 171
Upgrade your Commodore system
Refurbished Hardware New APROTEK modems
MONITORS DRIVES OTHER 64/128/AMIGA-2400 BAUD - $119
1701 -$235 1841 -$100 1660 -$30
1702-$255 1541-l1-$120 1670-$50
1801-$265 -1571-$165 C64 -$100 EXPANDER FOR THE 64/128- $40
1802-$285 1571-1-$185 — 640-$120 New CMD accessories
1901-$295 1581-$180 C128-$175 _JIFFYDOS 64/128 & ANYDRIVE "SYSTEM"- $85
1902-$305 1001SFD-$150 _C128D-$225 128D/ANY DRIVE *SYSTEM"- $95
10848-$325 1530 DATASETTE-$35 ADDITIONAL DRIVE ROMS - $45
MANY BOOKS- $10 SOFTWARE - $10-20 RAMLINK/RAMCARD C/W BATTERY (OMb) -$345
ASK FOR ANYTHING, IMIGHT HAVEITI 1Mb RAM SIMM - $75 4Mb RAM SIMM - $250
64/128/AMIGA-1200 BAUD - $89
APROSAND-4 SLOT CARTRIDGE
J.P. feu PRODUCTS BY MAIL SHIPPINGINCLUDED FORCANADA, USA +15%
BOX #1233, STATIONB
WESTON, ONTARIO, MS9L2R9
15 DAY WARRANTY ON REFURBISHED GOODS
TAX- Canada +7% GST, Ontario Res. + 8% PST
NOVEMBER 1992 COMPUTE
Q-19
G-20
When your BASIC
programs need
a burst of speed,
give them a
shot of machine
language.
BEGINNER BASIC
Larry Cotton
ADDING ZIP
TO BASIC
| get lots of requests for pro-
gramming tips on ways to use
BASIC with many applica-
tions, ranging from games to
databases. A typical question
might be, “How do | write a
fast subroutine for doing
searches for a given name
and address in BASIC?" Anoth-
er might be, “How do | make
the aliens move faster while
monitoring the joystick port,
keeping score, and moving
background scenery?”
The answer to these ques-
tions is simple: If you want to
do it fast, forget BASIC. Any
program can be written in BA-
SIC (assuming it will fit the com-
puter’s memory), but you
might drop off to sleep waiting
for something to happen.
Many articles have been writ-
ten on maximizing BASIC's
speed, and you can get some
improvement using these tech-
niques. However, none but
the shortest, most elementary
database programs should be
written in BASIC. Any program
that is more sophisticated is
best written in some other pro-
gramming language—prefer-
ably machine language (ML).
To learn more about those pro-
gramming techniques, consult
Jim Butterfield’s “Machine Lan-
guage” column elsewhere in
Gazette.
As for games, some can eas-
ily be written in pure BASIC, es-
pecially those that don't re-
quire blinding speed. Some
examples would be word-
search, spelling, math-drill,
and even simulated board
games. These types of games
don’t require much speed,
and the user wouldn't notice if
the computer slowed a little dur-
ing execution.
Actually, BASIC and ML
can be used together. One
way is to use a BASIC pro-
gram as an ML loader. Then a
COMPUTE NOVEMBER 1992
SYS command puts you into
machine language to stay.
The other way is to incorpo-
rate a speedy routine within a
relatively slow BASIC pro-
gram. Here’s an example of
the latter.
Suppose you're writing a
pick-a-card-any-card game.
You need to shuffle a deck of
52 cards quickly. By generat-
ing a nonrepeating list of 52
numbers, you could assign
the numbers to an array of all
the cards. The following pro-
gram is one way to generate
those numbers in BASIC.
BASIC RND
10 PRINT{CLRXDOWN}PRESS
ANY KEY TO RANDOMIZE 52
NUMBERS
20 PRINT{DOWN} WITH OUT
REPEATS.
30 GETAS:IFAS=" "THEN 30
40 PRINTCHRS(147)
50 Q=RND(-TI/101)
60 C=52:DIMRN(C)
70 FORX=1TOC
80 RN(X)=INT (C*RND(1))+1
90 FORT=XTO1STEP-1:
IFRN(X)=RN(T-1) THEN8O
400 NEXT
110 PRINTRN(X),
120 NEXT
130 PRINT{DOWN) I’M SURE
YOU DON'T WANT A REPEAT!
Now, let's try doing the
same thing using machine lan-
gage. (Don't worry, Jim Butter-
field. Your column is safe!)
ML RND
10 Q=RND(-TI/01):
PRINTCHRS(147)
20 FORT=49152T049221:
READD:POKET,D: NEXT
30 POKES4286,255:
POKES4287,255: POKE54290,
128: REM SET UP VOICE 3
40 CB=49480
50 A=52:REM RANDOMIZES
FROM 1 TO A WITHOUT
REPEATS; MAX. VALUE OF A
IS 255.
60 POKE49222,A
70 PRINT“{DOWN} PRESS ANY
KEY TO RANDOM-
IZE”A“NUMBERS
80 PRINT“{DOWN} WITH OUT
REPEATS.
90 GETAS:IFA$=""THENSO
100 PRINTCHR$(147): SYS49152
110 FORT=CB+1TOCB+A:
PRINT(PEEK(T)),: NEXT
120 PRINT:PRINT:PRINT “AGAIN?
(Y=YES, N=NO)
130 GETAS: IFA$<>"Y” THENIFA
$<> “N"THEN130
140 IFAS="N”"THENEND
150 GOTO100
1000 DATA 172,70,192, 69,0,153,
72,193,136,208,250, 173,
70,192,170,160, 0,153,72
1010 DATA 192,200,240, 11,202,
138,208,246,173,70, 192,
170,76,17,192,173,70,192,
141
1020 DATA 71,192,173,27,212,
170,189,72,192,172,70,
192,217,72,193,240,241,
136,208
1030 DATA 248,172,71,192,153,
72,193,206,71,192,208,
227,96
Run both programs and ob-
serve the difference in how
long it takes to generate 52
nonrepeating numbers, Allow
plenty of time in the BASIC ver-
sion, especially for the last sev-
eral numbers.
To use embedded ML sub-
routines in a BASIC program,
just SYS to the routine (see
line 100 in ML RND). After the
numbers are generated, they
appear in memory registers
49481 through 49532 (for 52
numbers).
Here's an invitation to you
programmers. I'd like to see
your own versions of both BA-
SIC and ML no-repeat random-
izing programs. Please send
them to me in care of COM-
PUTE’s Gazette, 324 West
Wendover Avenue, Suite 200,
Greensboro, North Carolina
27408. If you keep them
small enough to print on one
page of the magazine, I'll pub-
lish the best examples in a fu-
ture column. a
D'IVERSIONS
Fred D'lgnazio
CAPTAIN FUTURE
AND HIS POCKET
COMMANDER
Hello. This is Captain Future.
People used to call me Fred,
but that's when | was station-
ary, physical, and sitting in a
real chair in a real office with
real wires tying me to one spot.
Now I’m Captain Future, I'm
mobile. I'm cordless. I'm wire-
less. I'm on the go. Where |
call you from one minute is not
where I'll be the next. You may
be there (where you really
are), but I'm only here in a met-
aphorical sense. I'm totally vir-
tual. | beam you up from my lit-
tle pocket phone somewhere
on the planet. You beam me
up, and | might be on a rock
cliff or in my minivan or under
a giant sequoia.
The revolution in my person-
al communications style oc-
curred two months ago when
| began renting my little Fujit-
su. Pocket Commander
phone. The phone weighs just
a few ounces; it's about five
inches long and two inches
deep. | wear it in a little case
on my belt.
When I'm wearing my Pock-
et Commander, | feel like a
new man. With that little
phone strapped to my side, |
pretend I’m James Bond with
his shoulder holster, But in-
stead of a warlike secret
agent, I’m a peaceful agent,
armed for the future, ready to
communicate with the world.
As soon as the Fujitsu lady
checked me out on my new
phone, | placed my very first
call to my wife. | found her in
an unlikely spot: the kitchen.
She picked up the kitchen
phone and said, “Hello?”
“Hello, dear,” | said. “It's
Captain Future, your husband.”
“Where are you?” asked my
wife, not at all impressed with
my new secret identity.
“Right outside the kitchen
door, dear," | answered proud-
ly. “About five feet away from
you, in the driveway.”
Next | called my mom. “Hel-
lo, Mom,” | said. “It's your son,
Captain Future.”
“Whois this really?" my moth-
er asked suspiciously.
“Aw, Mom," | said. “I'm call-
ing you with no wires. No ca-
bles. Just thin air. And we're
talking just like on a real
phone. Isn't it grand?"
“I don't know any Captain Fu-
ture,” my mother said. “And
whoever this is, you sound
like you're calling me from in-
side a fish tank or a tin can.
Please go away.” Clink!
After calling my mom, |
called everyone else | could
think of. | called people from
restaurants, bowling alleys,
baseball diamonds, petting
zoos, and public marinas.
Suddenly, | realized that |
had become an addictive com-
municator. | first realized this
after | installed the Fujitsu Pock-
et Commander in a cellular
dock inside my minivan. Now
| had a boosted power
source, acellular antenna cork-
screwing up the side of my
car, and an in-car speaker
phone with a tiny mike
clipped to the sun visor over
the driver's seat. After | ran out
of other people to call on my
car phone, | began calling my
wife again.
“Hello, dear!”
“Is that you, Fred?" my wife
asked, from inside the house.
“Where are you now?"
“Outside in the driveway, in
Our Car.”
“If you're already home,
why don't you come inside
and talk, like a real person?”
“Because it's more fun to
call you from the car. It's kind
of like an intercom. Besides,
I've got my laptop computer
out here, and I'm trying to
plug it into the car phone so |
can call online bulletin boards
and maybe even send faxes.”
“Why would you want to
send faxes from your car?" my
wife asked. “Especially when
you're parked in our drive-
way?”
Since then, my wife has slow-
ly warmed to pocket phones.
For example, last week she
and | were trekking around a
rock quarry on the seacoast
north of Boston. There wasn't
another person for miles
around. Nature was in bloom
all around us. Suddenly, my
wife reached for my belt.
“Dear!" | screamed, jump-
ing backward. “What's got in-
to you?”
“Your phone," she said. “I
want your phone. | just remem-
bered | have to call my office.”
While my wife sat on the
quarry’s edge talking with her
boss and her secretary, | be-
gan climbing down the verti-
cal wall of the quarry. After
about 15 minutes, | made it
down to the level of the water
that filled the quarry's inner ba-
sin. | took off my shoes and
dangled my bare toes in the wa-
ter, scaring away a couple of
polliwogs that were sunning
themselves on a big boulder
just beneath the surface. | lis-
tened to my wife as she talked
on the cellular phone, her
voice crystal clear high above.
“This is weird,” | thought.
Somehow, my wife's phone
call to her office didn’t seem
out of place even here, deep
in the heart of undisturbed na-
ture. In addition, the call
didn't stress me out or make
me lose my sense of awe and
appreciation for my surround-
ings. Somehow, everything
seemed to fit in.
It'll be amazing to see how
this revolution changes the fu-
ture face of work and leisure.
Maybe in the future it'll be nor-
mal to conduct business on a
rock cliff while on a daylong
trek into a remote granite quar-
ry. As | gazed out at the deep
blue quarry lake all around
me, | thought that might be
kind of nice. a
NOVEMBER 1992 COMPUTE
In this exciting
episode, read how a
mild-mannered
magazine columnist
is transformed
into Captain Future.
G-21
Now that the holiday
season is fast
approaching, here’s
the GEOS system
I'd really like to find
G-22
under the tree.
GEOS
Steve Vander Ark
ULTIMATE GEOS
In an IBM magazine recently,
a senior editor describes his
quest for the ultimate PC. The
cost of this system would buy
a pretty nice sports car.
That started me thinking
about the ultimate GEOS set-
up. | wondered just how pow-
erful GEOS could be with all
the right gizmos hooked up to
it. And, since Christmas is just
about once again to take over
prime time and the malls, | fig-
ure this is a great time to
make yet another GEOS wish
list. While the total wouldn't
buy a snazzy sports car, it
might be enough to buy, oh, a
used Ford Escort.
My dream GEOS setup has
to start with a computer, of
course. I'll go with the 128,
since an 80-column screen is
essential. Now, the 128D
does have a detachable key-
board, which is nice, and an
extra 64K of video RAM, but |
don't like the idea of having
that darn 1571 permanently
set up as drive 8. | have much
better ideas for disk drives, so
I'll stick with the flat 128.
One advantage to the Com-
modore computer is that you
don't have to spend heaps of
money on extra cards to do
things like create color screen
displays. Our 128 has 40-col-
umn and 80-column modes
built right in; all we need to do
is to choose a monitor which
can display either mode on
command. Since nothing but
the best will do for our ultimate
setup, I'll add a Commodore
1084S monitor.
Mode switching can be-
come a constant chore when
you work with GEOS on the
128; many programs, from lit-
tle utilities like Blue Pencil to
big utilities like geoPublish,
run fine on the 128 but de-
mand 40 columns. To make
life a little easier, I'll add a 13-
inch 40-column monitor on the
side. You'd be surprised how
COMPUTE NOVEMBER 1992
handy this configuration can
be. When you switch to 40-
column mode, the image
jumps from one monitor to the
other, and the screen of the un-
used monitor goes peacefully
blank. If you can't afford a sec-
ond monitor, a color TV works
about as well. I'm going for
broke here, though, so I'll pick
up an 1802 monitor.
One or two more details are
needed before we tackle the
big question of drives and
RAM expansion. We must, for
example, have an input de-
vice. Speaking from experi-
ence, having used a joystick,
mouse, KoalaPad, and light
pen with an assortment of driv-
ers, | strongly recommend a
mouse. Speaking from the ex-
perience of friends, the
mouse of choice is the Com-
modore 1351.
OK, let's talk disk drives. It
would be nice to include
drives to handle both 5%-
inch and 3¥%-inch disks, For
the 5%-inch disks, the best
bet is the good old 1571,
which can read single- or dou-
ble-sided floppies. That's pret-
ty much standard stuff.
Let's take a leap into the big
leagues for the 3%%-inch
drive. We have a couple of
very impressive choices, now
that Creative Micro Designs
(CMD) has released a pair of
high-density drives; the FD-
2000, with 1.6 megs per disk,
and the FD-4000, with a whop-
ping 3.2 megs of data on a flop-
py! We're talking dream mate-
rial here, folks! The ultimate
GEOS system has to have an
FD-4000.
That accounts for two of the
drives. GEOS can effectively
handle only three drives, so
this next choice might be a lit-
tle sticky. Some form of RAM
expansion is a must with
GEOS, but if it’s configured as
a RAM drive, there goes the
third drive. It's hard to imagine
an ultimate system, however,
without a hard drive. For now,
anyway, I'll just choose both.
The hard drive of choice
will be one of the CMD HD-
series drives, which are com-
patible with GEOS and practi-
cally everything else. Since
money's no object, I'll take the
HD-200 with 200MB capacity.
| do need RAM expansion
as well, so let's take a look at
the options. The Commodore
1751 RAM expansion unit can
be upgraded to larger capac-
ities than the stock 512K, but
it's still a pretty bland unit. A
much more exciting choice
would be either the RAMLink
or RAMDrive from CMD. Each
has two invaluable features no
RAM expansion device
should be without: a separate
power supply, which keeps
the data intact when you shut
down your system, and a bat-
tery backup, which means
that in the event of a power fail-
ure, your data won't evaporate
like spit on a hot skillet. Both
are fine units. RAMLink can be
upgraded to 16 megs, while
RAMDrive is limited to 8
megs. RAMLink also can be fit-
ted out with a realtime clock cir-
cuit to set your clock in
GEOS, and it also features a
pass-through port that | just
might need before this system
is completed. I'll add RAM-
Link, maxed out to 16 megs.
I'll have to decide how to
configure all those drives
when | pick a desktop pro-
gram, but I'll do that next
month when | talk about soft-
ware. For now, let's recap my
shopping list.
128 CPU (used) $ 200.00
1084S monitor $ 289.00
1802 monitor (recondi- $ 99.95
tioned)
1351 mouse $ 32,95
1571 disk drive $ 100.00
(used)
FD-4000 disk drive $ 300.00
HD-200 hard drive — $ 1,099.95
RAMLink with battery $ 584.90
and 16MB RAM
TOTAL $2,706.75 0
NEW PRODUCTS From Makers of RAMDRIVE
Battery Back-up
Ram Disk for
GEOS 2.0 and
GEOS 128, 2.0
Magnitudes faster than any floppy or
hard drive
2 MEG model has capacity of TEN 1541’s
Includes GEOS application to select one of
up to five 1571's
Supplied with wall mount power supply and
battery cable and holder
Automatically detects power out and switches
to back-up mode
Activity light indicates access
Battery used only when wall mount AC power
supply off
INTRODUCTORY PRICE
BBG RAM
Reboots GEOS from BBG Ram quickly and quietly
BBU
Battery Back-up
Interface
Module for
Commodore
17xx REU’s and
Berkley Softworks’
GEORAM 512
Reset button without data loss
Activity indicator light during access
Battery low voltage indicator
Wall-mounted power supply and battery holder
and cable supplied
GEOS compatible, allows reboot to GEOS
Automatic battery back-up, no switches to push
Battery powers unit only when AC power off
BBU supplies power to 17xx REU’s and GEORAM.
Commodore heavy power supply not required
INTRODUCTORY 00
PRICE S49
Call: 1-800-925-9774
°
°
°
°
MODEL 512 1 MEG 2 MEG >
Imostercard
$799 $410° $439 GEOS registered Trademark of Berkley Softworks, Inc. aus
[el Please Add:
eo PERFORMANCE 5 Upper Loudon Road U.S. $6.00 S&H
a Pe ESReiiPe ASE RAS fSiinc Loudonville, New York 12211 Canada $10.00 S&H
$4.00 C.O.D.
Circle Reader Service Number 153
COMPUTE’s
SpeedScript Disk
A powerful word processing
package for Commodore 64
and 128 owners
A Great Deal for Commodore
Users!
° SpeedScript for the 64
° SpeedScript 128—80-column version
* Spelling checkers
¢ Mail merge
° Date-and-time stamp
* 80-column preview for the 64
* Turbo save and load
¢ Plus more than a dozen other SpeedScript
support utilities all on one disk (including
full documentation)
YES! Send me _______ copies of COMPUTE's
| SpeedScript Disk.
I've enclosed $11.95 plus $2.00 postage and handling. (Outside
| U.S. and Canada add $1.00 for surface mail or $3.00 for
| airmail.)
| ORDER NOW!
|
Amount
Sales Tax*
Total
Name
Address
City State
Mail personal check or money order to
Commodore SpeedScript Disk
324 W. Wendover Ave., Ste. 200
Greensboro, NC 27408
| Residents of North Carolina and New York, add appropriate tax for your area. Canadian
orders, add 7 good and services tax
Please allow 4-6 weeks for delivery. Program available only on 54-inch disks.
Readers take over
this month’s column
G-24
with a collection
handy tips for the
64 and 128.
PROGRAMMER’S PAGE
Randy Thompson
READER’S GRAB
BAG
From the mailbox to the print-
er, this grab bag of program-
ming gems comes from you,
our readers. Keep 'em com-
ing. We pay up to $50 for
each tip we publish.
64 or 128?
There's an easy way for your
BASIC program to detect
which 8-bit Commodore com-
puter it’s running on. Simply
check the variable DS$ in the
first line of your program. If
DS$ is equal to a null string
(DS$="""), your program
is running on a 64 or on a 128
operating in 64 mode. That's
because in 128 mode, the
DS$§ string returns the current
status of the disk drive, where-
as on a 64, DS$ doesn't hold
anything until you define it.
Incidentally, checking DS$
on a 128 that has no drive at-
tached can crash your pro-
gram, but how many driveless
128 owners do you know?)
ARTHUR MOORE
ORLANDO, FL
Redefining Restore
This two-line program turns
your Restore key into a com-
puter reset button. After you
type in and run the program,
tapping (sharply, of course)
the Restore key will yield the
same results as the BASIC
command SYS 64738.
10 FOR 1=32768 TO 32776:
READD: POKEI,D: NEXT
20 DATA 248,252,226,252,195,
194,205,56,48
To disable your new reset
key, turn the computer off
and then on again.
Here’s how the program
works. Whenever you press
the Restore key, the comput-
er checks memory locations
32772-32776 for the numbers
195, 194, 205, 56, and 48.
COMPUTE NOVEMBER 1992
These numbers are the PET-
SCIl codes for the reversed
capital letters CBM followed
by the number 80. If that
string is found, the computer
jumps to the machine lan-
guage subroutine pointed to
by memory locations 32770
and 32771. The program list-
ed above redirects this vector
to point to the 64’s reset rou-
tine found at 64738. Things
get a bit tricky here, because
the reset routine at 64738 al-
so looks at memory locations
32772-32776 for the string
CBMBDO. If it finds those char-
acters, it jumps to the subrou-
tine pointed to by the vector
at 32768. To avoid such
jumpy behavior, our Restore-
reset routine sets this vector
so that it points right back in-
to the 64's reset routine, forc-
ing the computer to continue
the reset operation from
where it left off.
One of the neat features of
this program is that you can
set the vector found at 32770
so that it points to your own
machine language program—
one that will execute every
time you press Resiore. In the
program above, this vector is
set equal to the third and
fourth numbers found in the
DATA statement on line 20.
Note that this program dis-
rupts the normal operation of
the Run/Stop-Restore key
combination. Now, pressing
Run/Stop-Restore resets the
computer, also, but it clears
any program that may have
been in memory.
LANCE SLOAN
SWARTZ CREEK, MI
Convenient Comma Key
This hack is for 128 owners
who enter a lot of data via
their numeric keypads. It trans-
forms the keypad’s Enter key
into a comma key. Such a set-
up is ideal for people who
type in a lot of MLX listings.
10 FOR I=0 TO 28: READ D:
POKE 4864+1,D:C=C+D: NEXT
20 IF C<>3231 THEN PRINT
“ERROR IN DATA STATE
MENTS”: END
30 BANK 15: SYS 4864: PRINT
“NUMERIC COMMA KEY
ACTIVE”
40 PRINT “TO DISABLE: POKE
830,128:POKE 831,250”
50 PRINT “TO REACTIVATE:
BANK 15:SYS 4864”
60 DATA 160,0,185,128,250,
153,29,19
70 DATA 200,192,89,208,245,
169,19,141
80 DATA 63,3,169,29,141,
62,3,169
90 DATA 44,141,105,19,96
EMIL HEYROVSKY
PRAGUE, CZECHOSLOVAKIA
ReDIMing Arrays
If you ever want to erase and/
or redimension (DIM) your var-
iable arrays, execute the fol-
lowing two commands from
within your program.
POKE 49,PEEK(47): POKE
50,PEEK(48)
This will erase all arrays. Un-
like the CLR command, how-
ever, these POKEs will not af-
fect nonarray variables.
HELEN ROTH
LOS ANGELES, CA
Monitoring 64 Code on the
128
The most popular area for pro-
grammers to store machine
language programs on the 64
is in the 4K area starting at
49152 ($CO00). Of course,
this area is relatively useless
on the 128 because 49152 is
where editor ROM is
mapped, but that doesn’t
mean you'd never want to
load your 64 code here. Be-
cause RAM underlies 128 ed-
itor ROM, 64 machine code
can be stored here and
worked on using the 128's
built-in machine language
monitor.
YANNICK TROTTIER
BRIDGETOWN, NS
CANADA a
PROGRAMS
MOB MASTER
By Hong Pham
Sprites (or movable object blocks) are
large user-defined graphics that can be
placed anywhere on your monitor's
screen. The 128 has a powerful sprite con-
troller that is built into its BASIC operating
system to make sprite programming fair-
ly easy. The 64, which has the same
sprite capabilities as the 128, lacks the
128's sprite controller system. Program-
ming sprites on a 64 usually requires
many lines of code filled with awkward
POKEs—but now there’s MOB Master.
MOB Master gives the 64 many of the
same features and sprite commands
that are found on a 128. It also has ex-
tras, such as sprite animation and bound-
ary-handling commands.
While this article explains how to use
MOB Master’s commands, it doesn't pro-
vide a complete tutorial for creating and
using sprites. Programmers who already
use sprites should have no trouble using
MOB Master. Beginners can find more de-
tailed descriptions of sprites and video
banking in such reference books as Com-
modore 64 Programmer's Reference
Guide or Mapping the Commodore 64.
Getting Started
MOB Master is written entirely in ma-
chine language. Use MLX, our ma-
chine language entry program, to type
it in. If you don’t have a copy of MLX,
see “Typing Aids” elsewhere in this sec-
tion. When MLX prompts, respond
with the following values.
Starting address: 7D00
Ending address: 86EF
When you've finished typing in MOB
Master, be sure to save it before exit-
ing MLX.
To activate MOB Master, load it
with the ,8,1 extension and then type
SYS 32000. At this point you'll see a ti-
tle screen that lets you know MOB Mas-
ter has been activated. You may now
begin writing your own sprite program.
Instead of using cumbersome POKEs
to control your sprites, however, you'll
have a whole new library of commands
at your disposal.
Ten Sprite Commands
MOB Master adds ten new BASIC com-
mands for easier sprite definition, posi-
tioning, movement, animation, and oth-
er miscellaneous functions. The first
three commands are similar to the
128's sprite commands of the same
name.
Here's an important programming
note to remember: When using a MOB
Master command within a BASIC pro-
gram, you must precede that com-
mand with a slash (/). In immediate
mode, however, you don’t need to use
the slash.
SPRITE #, on/off, fgnd, priority, x-exp, y-
exp, mode
The SPRITE command defines most of
the characteristics of a sprite. Select
the sprite number (#) with a value rang-
ing from 0 to 7.
Use a 1 in the on/off parameter to
turn on your sprite; use a O to turn it off.
The sprite foreground (fgnd) color is
defined with a value between 0 and
16.
To make the sprite appear in front of
Objects on the screen, set its priority
parameter to 0. To make it appear be-
hind the objects on the screen, set the
parameter to 1.
The sprite can expand to twice its
original size horizontally (x-exp) or ver-
tically (y-exp) by setting the next two
parameters to 1. Set these parameters
to O to turn off sprite expansion.
Turn on multicolor mode with a 1 or
turn it off with a 0.
MOVSPR #, x, y
MOVSPR either positions or moves the
sprite. The first example plots the
sprite anywhere on the screen, with x
being any pixel number between 0 and
319 and y any number between 0 and
199. Unlike normal sprite program-
ming, MOB Master lets you place
sprites beyond the 255th pixel without
additional programming.
MOVSPR #, direction # speed
This variation moves the sprite in a spe-
cific direction and speed. The direction
value can range from 0 to 255. This val-
ue can be converted to degrees by mul-
tiplying it by 45/32. To move the sprite
up, use a value of 0. To move it to the
right, use a value of 64. To move
down, use 128. To move left, use 192.
Intermediate values will move the
sprite at different angles across the
screen.
The value for speed can range from
0 to 255, with 0 being fastest and 254
being slowest. A value of 255 means
that the sprite is stationary.
The format for this command is sim-
ilar to that used for positioning a
sprite, but instead of using a comma to
separate the values, use the # sign.
For example, MOVSPR 0, 64 # 100
would move sprite 0 to the right at a fair-
ly slow speed.
SPRCOLOR color 1, color 2
In multicolor mode, the two multicolor
colors are shared among all eight
sprites. The first parameter defines mul-
ticolor 0, and the second parameter de-
fines multicolor 1.
ANIMATE #, speed, mode, start frame, end
frame
ANIMATE defines a sprite image or ani-
mates the sprite by successively chang-
ing its image pointers. The animation
speed can range from 0 to 255, with 0
being fastest and 254 being slowest. A
value of 255 means that the sprite has
no animation. The mode parameter
tells MOB Master how the sprite will be
animated. A value of 0 means that the
sprite will always be animated, and a 1
means that the sprite will be animated
just once. Any other,value will stop the
sprite from being animated.
Sprite data resides in blocks of 64
bytes each. These blocks are num-
bered from 0-255. To calculate the lo-
cation of a block of sprite data in mem-
ory, multiply the block number by 64.
The result gives you the location
where the first byte of a sprite definition
should be poked. If you define several
sprites whose shapes differ slightly
and then switch rapidly among these
blocks with the ANIMATE command,
the sprite will appear to move in an an-
imated fashion.
The start frame parameter indicates
the first sprite image or block for anima-
tion. The end frame parameter indi-
cates the ending block number for the
animated sequence. Any sprite
NOVEMBER 1992 COMPUTE G-25
PROGRAMS
frames that are in between these will
be automatically called.
BOUNDARY #, mode, top, bottom, left, right
Each sprite has its own individual
screen boundaries. Once the sprite
reaches a boundary that you set with a
pixel number, the mode parameter in-
dicates the action that the sprite will
take. AO means that the sprite will
wrap around and be placed on the op-
posite boundary. A 1 indicates that the
sprite will bounce off the boundary. A
2 indicates that the sprite will stop at
the boundary. Any other value indi-
cates that the sprite will be turned off
when it reaches a boundary, discon-
tinuing motion.
For convenience, MOB Master al-
lows only the horizontal boundary to be
accurate to within two pixels. The actu-
al boundary occurs on every even pix-
el. MOB Master will automatically di-
vide the value that you have supplied
with the boundary parameter by 2.
BOUNCE #, mode
BOUNCE bounces a sprite in a certain
way, even if it's not at its boundary.
Mode indicates how the sprite will
bounce. A 0 argument means that the
sprite will bounce vertically; a 1 indi-
cates that the sprite will bounce later-
ally. Any other value will reverse the
sprite's direction.
SPLIT mode
MOB Master supports two different ras-
ter-interrupt routines for flicker-free
sprites. It accomplishes this task by up-
dating its shadow registers when the
raster scan is at a certain position on
the screen. To select one of the two ras-
ter-interrupt routines, set mode to ei-
ther 0 or 1. The only difference is that
the latter routine allows you to display
sprites on the top and bottom borders.
If no argument follows SPLIT, it will
turn off the raster-interrupt routine.
Before attempting an input or output
operation, especially with a disk drive,
it's best that you turn off the raster-
interrupt routine. If you don't turn off
the routine, the computer may freeze un-
til you hit the Run/Stop and Restore
keys simultaneously.
G-26 COMPUTE NOVEMBER 1992
IRQ enableflisable
When you move multiple sprites as if
they were one sprite, one sprite may
move ahead of the others, creating a
gap. This is because MOB Master up-
dates the sprites 60 times a second,
and BASIC may be too slow to move
all the sprites before MOB Master up-
dates them. One sprite may be updat-
ed before BASIC updates the others.
To temporarily stop MOB Master
from updating the sprites, use IRQ 0.
Any other value will allow MOB Master
to continue updating the sprites. Be
careful not to hold the system for too
long, or the computer may hang up.
ZAP
ZAP clears all the sprite registers.
KILL
KILL disables MOB Master and re-
stores the previous interrupt and BA-
SIC vectors.
Additional Notes
For all MOB Master statements, with
the exception of IRQ, you can substi-
tute an unknown parameter with an as-
terisk (*). You can also use the asterisk
if you don't want to make any changes
to the current parameter. You don't
have to supply all of the parameters of
the command, but you must denote
the sprite number. You cannot substi-
tute an asterisk for the sprite number.
Collision Detection
Sprite-to-sprite or sprite-to-background
collisions can be monitored by using
the USR command. To return the stat-
us of the last sprite-to-sprite collision,
type in PRINT USR(Q). Likewise, to re-
turn the status of the last sprite-to-back-
ground status, type PRINT USA(1).
Shadow Registers
MOB Master updates its shadow regis-
ters to the VIC-Il during a raster inter-
rupt, or once every '/é0 of a second, to
avoid sprite flickers. An advantage of
this setup is that the sprites continue to
move while your program does some-
thing else. You shouldn't make a direct
POKE to the VIC-II registers to define
a sprite, because once a raster inter-
rupt occurs, MOB Master overwrites
the VIC-II register with the contents of
the shadow register. Therefore, poke to
the shadow register instead. Below is
the memory map of the shadow regis-
ter and its VIC-II equivalent.
VIC-Il Equivalent Description
Loca- Shadow
tion Register
(Base + offset)
$DO00 Base + 1312 Sprite 0 x po-
(53248) sition
$D001 Base +1320 Sprite 0 ypo-
(53249) sition
$D010 Base + 1328 Most signifi-
(53264) cant bits of
sprites 0-7
horizontal po-
sitions
$D015 Base +1329 Sprite ena-
(53269) ble register
$D017 Base +1330 Sprite Y-Ex-
(53271) pand regis-
ter
$D01D Base + 1331 = Sprite X-Ex-
(53277) pand regis-
ter
$D01B Base + 1332 — Sprite-to-fore-
(53275) ground prior-
ity register
$D01C Base + 1333 Sprite multi-
(53276) color mode
register
$D025 Base +1334 Sprite multi-
(53285) color regis-
ter 0
$D026 Base +1335 Sprite multi-
(53286) color regis-
ter 1
$D027 Base +1336 Sprite 0 col-
(53287) or register
$07F8 Base +1344 Sprite shape
(2040) data point-
ers. The actu-
al location of
this register
depends on
the location
of the video
matrix.
The default base is $7D00 (32000).
MOB Master and Machine Language
MOB Master's sprite-handling ability is
not restricted to BASIC programs. Ma-
chine language programmers will find
MOB Master useful, as well. In fact,
MOB Master and machine language
are a great combination because you
can do much more with machine lan-
guage than you can with BASIC.
To make access to MOB Master's
subroutines easier, MOB Master has a
jump table. For all of MOB Master's sub-
routines, enter it with a JSR instruction,
and use the X register to denote the
sprite number. The following is the mem-
ory layout of the jump table.
Location
(Base + offset)
Base
Base + 3
Base + 6
Base + 9
Base + 12
Base + 15
Base + 18
Base + 21
Base + 24
Base + 27
Base + 30
Base + 33
Base + 36
Base + 39
Base + 42
Description
Enable MOB Master's
BASIC interface.
Enable raster-interrupt
routine 1.
Enable raster-interrupt
routine 2.
Disable raster-inter-
rupt routine.
Zap all sprite regis-
ters.
Turn sprite on or off;
C flag set = sprite is
on.
Position sprite at x, y.
AC = LSB of x posi-
tion; C flag = MSB of
X position; YR = y po-
sition.
Set sprite color; put
sprite color in AC.
Set sprite multicolor
mode characteristics.
C flag set = multicolor
mode on. AC = multi-
color 0; YR = multicol-
or 1.
Set sprite to back-
ground priority; C flag
set = background has
priority.
Set Y-expand; C flag
set = expand sprite
vertically.
Set X-expand; C flag
set = expand sprite
horizontally.
Set sprite speed; AC
= sprite speed.
Set boundary action
mode (similar to BA-
SIC BOUNDARY state-
ment).
Set sprite direction;
AC = sprite direction.
Set animation speed
and mode, AC = ani-
mation speed; YR =
mode.
Set animation start
and end image point-
ers, AC = start image
location; YR = end im-
age location.
Set top and bottom
borders. AC = top bor-
der; YR = bottom bor-
der.
Set left and right bor-
ders. AC = left bor-
der; YR = right bor-
der, Note: Divide bor-
der value by 2,
Bounce sprite vertical-
ly.
Bounce sprite lateral-
ly.
Reverse sprite direc-
tion,
Base + 45
Base + 48
Base + 51
Base + 54
Base + 57
Base + 60
Base + 63
Note: C flag = Carry flag, AC = Accu-
mulator, XR = X register, YR = Y reg-
ister
If you're using MOB Master exclu-
sively in machine language, you may
delete the BASIC interface module start-
ing at location $82CC (33484) or
(base) + 1484 to $86EA 34538 or
(base) + 2538.
MOB MASTER
7D60:4C CC 82 4C 7A 7D 4C 81 4D
7D68:7D 4C 88 7D 4C Al 7D 4C ED
7D1@:AB 81 4C 94 81 4C BC 81 4C
7D18:4C C2 81 4C D9 81 4C EA 37
7D206:81 4C FB 81 4C 60 81 4C B9
7D28:86 81 4C 69 81 4C 6D 81 7D
7D36:4C 75 81 4C 84 81 4C 8C F2
7D38:81 4C 12 81 4C 1F 81 4C 8F
7D4G:29 81 78 CD 14 63 D@ G5 6F
7D48:EC 15 93 F@ GE 48 AD 14 6F
7D50:03 8D DA 7D AD 15 G3 8D B8
7D58:DB 7D 68 8D 14 63 8E 15 65
7D66:03 A9 7F 8D OD DC AY 81 CO
7D68:8D 1A D@ AD 11 DG 29 7F 43
7D76:8D 11 D@ AD 1E DG AD 1F 1A
7D78:D@ 6@ AJ B9 A2 7D 4C 42 AA
7D80:7D A9 DC A2 7D 4C 42 7D 89
7D88:78 A9 81 8D GD DC AY BH 62
7D90:8D 1A D@ AD DA 7D 8D 14 C9
7D98:03 AD DB 7D 8D 15 03 58 F2
7DAG:66 A2 88 AOI BB 9D 26 82 58
7DA8:CA 10 FA A2 67 AQ FF 9D 13
7DBG:48 82 9D 78 82 CA 16 F7 63
7DB8:6@ AD 19 DG 8D 19 DG 29 1B
7DCG:61 FG 16 26 1E 7E AD 11 94
7DC8:DG 29 7F 8D 11 D@ AY FA 59
7DD6:8D 12 D@ 26 BC 7F 20
7DD8:7E 4C 31 EA AD 19 D@
7DE6:19 DG 29 Gl FG 19 AQ
7DE8:D@ 21 28 1E 7E AD 11
7DF6:29 7F 69 G8 8D 11 DB
7DF8:F9 8D 12 D@ EE E7 7D
7EG6:BC 7F 26 76 7E 68 A8
7EG8:AA 68 46 AD 11 DO 29
7E16:8D 11 D@ AY BG 8D E7
7E18:8D 12 D@ 4C D9 7D A2
7E26:A@ GE BD 26 82 99 GG
7E28:BD 28 82 99 61 D@ BD
7E30:82 9D 27 D@ BD 40 82
7E38:F8 FF 88 88 CA 14 E3
7E40:30 82 8D 16 DO AD 31
7E48:8D 15 D® AD 32 82 8D
7E50:D@ AD 33 82 8D 1D DB
7E58:34 82 8D 1B D@ AD 35
7E60:8D 1C D@ AD 36 82 8D
7E68:D@ AD 37 82 8D 26 D@
7E70:A2 07 BD 48 82 C9 FF
7E78:11 C9 40 96 14 BD 50
7E8G0:F@ GF DE 50 82 DG G3
7E88:9D 7E 20 83 7F CA 10
7E96:66 38 BD 48 82 E9 3F
7E98:58 82 4C 87 7E BD 58
7EAG:DD 66 82 FO 69 9D 6B
7EA8:20 2E 7F 9D 68 82 BD
7EBO:82 C9 20 96 21 C9 40
7EB8:26 C9 66 98 2B C9 80
7EC@:38 C9 AB 9B 35 C9 CB
7EC8:3A C9 EG 98 3F 26 45
7ED@:26 15 7F 4C 4E 7F 20
7ED8:7F 26 15 7F 4C 48 7F
7EEG:48 7F 26 15 7F 4C 45
7EE8:20 48 7F 20 15 7F 4C
7JEFO:7F 20 4B 7F 26 15 7F
7EF8:48 7F 20 4B 7F 20 15
7FO6:4C 4E 7F 26 4E 7F 20
7E@8:7F 4C 4B 7F 20 4E 7F
7F16:15 7F 4C 45 7F 26 2E
7F18:18 7D 68 82 C9 26 96
7F26:38 E9 26 9D 68 82 38
7F28:9D 68 82 68 68 66 BD
7F30:82 29 26 68 BD 58 82
7F38:1F 28 FG 08 8D 43 7F
7F40:A9 20 EO FF 60 AG GG
7F48:AG G1 2C AB G2 2C AG
7F56:BD 48 82 C9 40 BO 1E
7F58:A9 41 FD 48 82 26 DO
7F60:98 FG G9 88 FB G9 88
7F68:09 4C 98 86 4C Dl 7F
7F76:49 8G 4C 16 8G BD 48
7F78:38 E9 3F 9D 50 82 AQ
7F86:4C 5D 7F BD 98 82 30
7F88:BD 78 82 C9 FF FO G8
7F90:80 82 FG G4 DE 80 82
7F98:BD 78 82 9D 8@ 82 BD
7FAG:82 DD 98 82 FO O64 FE
7FA8:82 60 BD 98 82 FO G6
7EBO:FF 9D 98 82 64 BD 88
7FB8:9D 4G 82 68 AD 9@ DD
7FCO:93 AA AD 18 DG 29 FO
7FC8:4A 18 7D 1C 82 8D 39
7FDG:60 BD 28 82 DD AG 82
7FD8: 33
7FEG:1E 88 F@ GF AD 31 82
7FE8:14 82 8D 31 82 AQ FF
7EFG:48 82 68 BD AG 82 9D
7FF8:82 A9 FF 9D 48 82 69
NOVEMBER 1992 COMPUTE
G-27
PROGRAMS
8600:12
8008:9D
8010:E9
8618:82
8620:81
8628:03
8030:F6
80638:BD
8640:BD
8048:68
8058:55
8058:81
8060:03
8068:82
8070:CB
8078:26
8080:82
8088:AD
8090:90
8698:20
80A0:81
8GA8:FO
80BG:4C
80B8: 86
80CG:AD
80C8:BG
80D0:8D
80D8:80
80EG:3D
80E8:A9
80F0:8D
8O0F8:26
8100:8D
81068:AD
8110:82
8118:18
8120:06
8128:60
8130:82
8138:03
8146:82
8148:82
8150:C9
8158:4C
8160:9D
8168: 68
8176:98
8178:9D
8186:9D
8188:9D
8196:9D
8198:03
81A0:82
81A8:28
81B0:1D
81B8:8D
81C0:82
81C8:82
81D6:82
81D8:60
81EG:82
81E8:82
81FG:6C
81F8:32
8206:1D
8268:8D
8216:16
8218:EF
8226:00
8228:06
G-28
3F
66
28
82
88
TE
12
9D
69
86
G2
88
TE
82
cg
4c
81
69
cg
BD
96
FO
20
82
EQ
cg
8D
8G
Da
cg
6G
38
AD
1D
AQ
9D
58
82
OA
2c
AD
81
FF
BD
Ag
82
82
98
6G
60
60
2c
F4
AD
BB
6G
AD
1D
36
82
3D
32
03
AD
BG
66
86
TE
oo
Or)
COMPUTE NOVEMBER 1992
8236:06
8238:00
8240:008
8248:FF
8250:00
8258:00
8266:90
8268:00
8276:00
8278:FF
8280:00
8288:00
8296:00
8298:06
82AG:32
82A8:E5
82BG:0C
82B8:AG
82CG0:88
82C8: 06
82DG:Al
82D8:63
82EG:EE
82E8:82
82F0:7D
82F8:A9
8306:3A
8368:AB
831G:AG
8318:3A
832G:A6
8328:C9
8330:3B
8338:20
8340: 26
8348:B7
8350:20
8358:D0
8360: 28
8368:B0
8376: 26
8378:83
8380:86
8388:8D
8390:FO
8398:FF
83AG:AC
83A8:FO
83B@:AD
83B8:83
83CG:FE
83C8:8D
83D0:FO
83D8:90
83EG:A8
83E8:A2
83F0:12
83F8:AE
8400:85
8408:B7
8410:60
8418:06
8420:DA
8428:18
8430:26
8438:26
8440:86
8448:7D
8450:96
8458:DA
Go
Oo
1)
FF
06
96
UT)
oo
ao
FF
oo
CT)
66
CT)
32
ES
gc
AG
i)
Go
85
8E
82
65
85
gD
86
A2
86
86
3A
AD
83
73
86
85
ta
F2
AS
2c
De
26
8D
83
61
26
Da
12
36
4c
83
E9
26
69
BO
RE
7D
43
26
8A
26
20
85
86
G6
1B
Bo
26
26
85
Ur)
Oo
Go
FF
Ur)
Uy)
vr)
Cl)
06
FF
06
ao
oo
oo
32
E5
gc
AG
ao
oo
Ag
12
85
OF
37
26
AQ
06
26
29
E8
Dd
4c
CI)
27
AG
66
26
28
AG
FQ
ce}
8c
78
58
1F
1lF
BD
82
D2
26
83
20
AE
@5
20
26
86
ED
AE
LP
gc
26
26
86
7D
06
DA
gc
20
6G
06
Us)
FF
ao
Cr)
i)
0B
06
FF
06
ts)
Ur)
Ct)
32
E5
gC
Ag
GG
Go
79
03
OF
98
86
D2
9B
20
1E
38
FO
G6
93
AQ
AG
Cl)
DL
B7
cD
ao
26
cl)
83
26
26
86
20
26
3D
83
E7
26
73
43
26
GF
73
20
85
43
86
86
66
15
BO
26
26
85
86
96
8460:0C
8468:0C
8476:35
8478: 03
8486:AC
8488:AB
8498:FO
8498:B7
84A0:85
84A8:7D
84BG:D0
84B8:CO
B4CO:F4
84C8:26
8406: 8E
84D8: 06
84E6:78
84E8:BG
84FG:20
84F8:20
8500:82
8508:06
8510: 26
8518:20
8520:85
8528:86
8530:06
8538:A8
8540:BG
8548:20
8550:20
8558:1F
8566:86
8568:06
8576:3C
8578:66
8580:0F
8588:20
8598:D0
8598:97
85AG: 66
85A8:8E
85BG:85
85B8:FF
85CO:A9
85C8: 66
85D0:66
85D8:7A
85EG:3A
85E8:8A
85FO:7A
85F8:73
8606:C9
8608:E2
8616:8A
8618: 26
8620:F4
8628:66
8636: 46
8638:86
8648:D90
8648:53
8656:54
8658:4C
8660:54
8668:41
8670: 43
8678:06
8680:00
8688:83
8696:85 57 85 89 84 6C 7D 72 41
8698:85 73 84 4D 4F 42 26 4D BB
86AG:41 53 54 45 52 26 26 56 AB
86A8:32 2E 31 36 2F 39 32 36 76
86B0:33 34 39 OD OB GD 4D 4F 79
86B8:42 26 4D 41 53 54 45 52 75
86C0:28 44 49 53 41 42 4c 45 3E
86C8:44 2E OD GO 43 4F 58 59 76
86D0:52 49 47 48 54 26 31 39 85
86D8:39 32 26 26 42 59 26 48 15
86E0:4F 4E 47 26 50 48 41 4D 87
86E8:0D 68 GG GG GB BB GB BB 7c
Hong Pham, the author of Pixel Mover
(May 1992), lives in Antigonish, Nova
Scotia, Canada.
136 COLORS
By David Kwong
As most people know, the 64 is capable
of producing 16 different colors. How
would you like to increase that number to
136 colors?
You can with 136 Colors. This interest-
ing program does it by placing different-
ly colored pixels side by side to produce
a third color. Since the 64 has 16 built-in
colors, it would appear that you could cre-
ate 256 colors by combining the 16x 16
color matrix. In reality, you get a total of
136 different hues, since 120 of them
would be duplicated.
There are three programs built into the
main 136 Colors program. The first pro-
gram is an editor that will produce
sprites capable of 136 colors. Addition-
ally, each sprite character can have up to
four colors simultaneously in high res-
olution mode, The second program is an
interrupt program designed to make pro-
gramming in BASIC with 136 Colors a lot
easier. The third program is also an inter-
rupt program designed to be used with
other programs to make 136 Colors avail-
able for use.
Typing It In t
Since 136 Colors is written entirely in
machine language, enter it with MLX,
our machine language entry program.
See “Typing Aids” elsewhere in this sec-
tion. When MLX prompts, respond
with the following values.
Starting address: C79C
Ending address: CFAB
Be sure to save a copy of the program
before exiting MLX.
Program 1
Load the program with the ,8,1 exten-
sion, and then type NEW. To activate
the first program, type SYS 51200.
The first thing to do is to select a
block number, indicated at the upper
right corner. A block number is an ad-
dress where sprites can be stored. Rec-
ommended block numbers are 128-
255 (block numbers range from 0 to
255). To find the actual address
where the sprite is stored, multiply the
block number by 64.
After you've selected a block num-
ber, a cursor appears in a grid that is
used to create a sprite. The sprite that
the grid represents is located at the up-
per right of the screen. The keys used
to move the cursor are displayed at the
lower right of the screen. Press f1 to be-
gin drawing. A menu at the bottom pro-
vides other options. One option, NO
DR/ER, means that the cursor will nei-
ther draw nor erase. This option lets
you move the cursor without affecting
what's on the screen.
To change colors while in draw
mode, press either 1, 2, or 3. To
change a sprite into its 136-color
shape, either exit or change the block
number. The program will then ask you
whether or not to change the sprite in-
to 136-color mode. /f you elect to do
so, the program then will ask you
where to store the 136-color sprite.
Each 136-color sprite is composed
of two normal sprites, one on top of the
other. Sprite 1 is represented by color
1; sprite 2 is represented by color 2.
Color 3 is divided between the two
sprites. When the two sprites are over-
lapped, color 3 is capable of produc-
ing a color from the 136-color palette.
The two sprites must have the same co-
ordinates for them to overlap perfectly.
Program 2
The second program, which is an inter-
rupt program, is activated or deactivat-
ed by SYS 52600. When activated,
you'll see a message onscreen that
says 136 BAS ON.
This program provides 16 new
sprite registers that will ease the usage
of the four high-resolution sprites and
136 colors. There are only four high-
resolution sprites, instead of the normal
eight, because of the fact that each hi-
res sprite requires two normal sprites.
This program defines hi-res sprite 1 as
the overlap of sprites O and 1. Hi-res
sprite 2 is the overlap of sprites 2 and
3, hi-res sprite 3 is the overlap of
sprites 4 and 5, and so on.
The first eight registers from 52882
to 52889 provide the x- and y-coordi-
nates of the four high-resolution
sprites. The first high-resolution sprite
can be moved by using the horizontal
register 52882 and the vertical register
52883, much like the system used by
the 64 to move the eight normal
sprites. Therefore, every two registers
provide the horizontal and vertical reg-
isters of one hi-res sprite.
The next four registers, 52890 to
52893, provide the colors of each of
the four hi-res sprites. The color num-
bers range from 1 to 136.
The last four registers, 52894 to
52897, provide the block numbers for
the four hi-res sprites.
This interrupt program supposes the
block numbers for each hi-res sprite to
be next to each other. Keep in mind
that one hi-res sprite is composed of
two normal sprites. Therefore, when
you choose block number 200, the two
overlapping sprites will be composed
of blocks 200 and 201.
All registers are write-only registers.
When you attempt to read them, they
will return a 0. When the registers are
0, the interrupt program will not alter
any sprites. Therefore, should you
poke 52882,0, nothing will happen,
meaning that if you originally poked
140, poking a 0 will not move it from lo-
cation 140 to location 0.
In order to see the sprites you have
produced, you must first set register
53269 to turn on the sprites you desire.
Hi-res sprite 1 can be turned on with a
POKE 53269, 3. POKE 53269, 12
turns on hi-res sprite 2. POKE 53269,
40 turns on sprite 3, and POKE 53269,
192 turns on sprite 4. To turn on more
than one sprite, simply add up the pre-
vious values.
Program 3
The third program is activated or deac-
tivated by SYS 52900. When activated,
you'll see 136C ON printed on the
screen. This simple program is de-
signed to work with other programs
that can make use of the 136 colors.
The only register provided is at
NOVEMBER 1992 COMPUTE G-29
PROGRAMS
52844. This register is a 136-color reg-
ister. By poking colors 1 to 136 into
this register, 2 colors will be returned at
locations 52898 and 52899. When the
2 colors are placed together, they'll
combine to create 1 of the 136 avail-
able colors.
Since machine language programs
may be too fast for the interrupt to be
effective, you must keep track of loca-
tion 52844. After execution of the inter-
rupt, 0 will be stored in location 52844.
If using machine language, you may
choose to poke the required color in
52844 and then JSR $CESA (make
sure the interrupt is deactivated) to ob-
tain the two colors in locations 52898
and 52899.
Technical Notes
This program takes up minimal space
from $C79C (51100) to $CFAA
(53162). Considering that 136 Colors is
composed of three programs, applica-
tions that require only one of these
three programs may isolate that partic-
ular program for usage.
The first program is located from
$C79C (51100) to $CD77 (52599), the
second program is located from
$CD78 (52600) to $CFAA (53162), and
the third program is located from
$CESA (52826) to $CFAA (53162).
Since different color combinations
may produce the same color, there
may in fact be less than 136 colors. Fol-
lowing is a color chart of the 136 col-
ors. The colors are organized from
brightest to darkest. (These colors
were very difficult to organize. Please
excuse some slight mistakes!)
White-Black (1-13)
Gray 2 (14-16)
Extra Gray (17-23)
Brown 1 (24-32)
Brown 2 (33-35)
Brown 3 (36-38)
Brown 4 (39-42)
Red (43-51)
Orange (52-57)
Yellow (58-64)
Tan (65-71)
Green 1 (72-77)
Green 2 (78-81)
Green 3 (82-86)
Green 4 (87-93)
Green 5 (94-95)
Cyan (96-102)
G-30 COMPUTE NOVEMBER 1992
Blue (103-111)
Purple 1 (112-118)
Purple 2 (119-123)
Purple 3 (124-127)
Purple 4 (128-134)
Purple 5 (135-136)
Seeing Is Believing
The 136 Demo program is designed to
show the various colors in action and
to provide programmers with addition-
al details on how to use 136 Colors.
The demonstration consists of a BA-
SIC program and machine language
sprite data. To avoid typing errors, use
The Automatic Proofreader to enter the
BASIC portion. Use MLX to enter the
sprite data. When MLX prompts, re-
spond with the following values.
Starting address: 3200
Ending address: 347F
Before leaving MLX, save the sprites
with the filename Sprites. When the
demonstration runs, it loads 136 Colors
and Sprites and looks for those file-
names.
136 COLORS
C79C:A2 66
C7A4:FD BD
C7AC:91 FD
C7B4:E8 15
C7BC:68 8D
C7C4:67 49
C7CC:E4 CB
C7D4:68
C7DC:65
C7E4:85
C7EC:FB
C7F4:26
C7FC:52
C804:Dd
C80C:62
C814:8D
C81C:A9
C824:16
C82C:8D
C834:A9
C83C:B9
C844:E4
C84C:67
C854:CC
c8s5c:4c
C864:8D
C86C:8D
C874:A9
C87C: 88
C884:29
C88Cc:Cc8
C894:68
c89c:18
C8A4:CD
AG
68
cB
FO
52
67
ag
BD
85
FO
F8
88
60
OE
80
Da
26
8D
CT)
cD
ce
63
cD
AB
1
21
FB
03
o7
Dg
oo
8D
8D
AQ
D2
27
Ag
B8
B5
OF
D9
Ag
20
8D
Ag
CE
8D
65
8D
EG
4E
18
C8AC:C8
C8B4:C
C8BC: 96
c8c4:91
c8cCc: 7B
C8D4:CD
C8DC:CD
C8E4:C9
C8EC:4C
C8F4:A5
C8FC:11
C9G4:FB
c9gc:55
C914:4F
C91C:4B
C924:4D
c92c:31
C934: 33
C93C:86
C944:88
c94C:42
c954:4C
C9SC:E8
C964:A7
C96C:6F
C974:C8
c97C:C9
C984:8D
C98C:CA
c994:91
c99C:9C
C9A4:EA
C9AC:17
C9OB4:FF
C9BC: 62
c9C4:CD
Cc9CC:6D
C9D4:66
C9DC: 4C
C9E4:6A
C9EC:AE
COF4:FB
C9FC:31
CAG4: 06
CAGC:16
CA14:A9
CA1C:B8
CA24:6A
CA2C:CB
CA34:FB
CA3C:F3
CA44:3E
CA4C:CB
CA54:CB
CASC:A5
CA64:64
CA6C: 88
CA74:A3
CA7C:29
CA84:CA
CA8C: 88
CA94:FB
CA9C:FD
CAA4:29
CAAC: 4C
CAB4:67
CABC:11
CAC4: 66
CACC:CA
CAD4:CA
CADC:CA
CAE4:86
CAEC: 8C
CAF4:CA
CAFC:CA
CBO4:CA
CBOC:85
CB14:9D
CB1C:9D
CB24:FF
CB2C:C9
CB34:E@
CB3C:C9
CB44:4C
CB4C:CA
CB54:64
CB5C:12
CB64:CB
CB6C: 26
CB74:26
CB7C: 4C
CB84:EA
CB8C: 8D
CB94:56
CB9C: GE
CBA4:F6
CBAC:FB
CBB4:68
CBBC: 86
CBC4:6D
CBCC:6D
CBD4:CB
CBDC: 63
CBE4:A9
CBEC:E0
CBF4:F9
CBFC:CB
CC4:31
ccéc:31
cc14:31
CC1C: 23
CC24:33
Cc2c:6C
CC34:28
CC3C:29
CC44:63
CC4C: 38
CC54:65
CC5C:33
CC64:33
CC6C: 26
CC74:32
cc7c:19
Cc84:35
CC8C: OF
Cc94:38
cc9c:39
CCA4:61
CCAC: 23
CCB4:95
CCBC: G5.
ccc4:61
ccce: 61
CCD4:6F
CCDC: 66
CCE4:63
CCEC: 3B
CCF4:51
CCFC: 91
CDG4:D1
CA
CA
4E
8D
4c
i)
A2
Ag
20
FO
FO
96
G4
Ze
9D
G2
20
AG
AG
88
EA
FO
OF
cD
88
FB
85
E8
7E
ag
4c
CB
cB
FO
64
4c
33
33
33
63
32
93
35
@5
32
32
9
36
12
33
13
OB
3A
69
@B
2c
G3
oc
G3
12
G4
O5
26
12
14
31
96
41
81
D8
CDGC:D8
CD14:DA
CD1C:DB
CD24:60
CD2C: 28
CD34: 28
CD3C: 88
CD44: 26
CD4C: 66
CD54:06
CD5C:4C
CD64:EE
CD6C: 8G
CD74: 06
CD7C:E3
CD84:D0
CD8C: 43
CD94:A2
CD9C:E8
CDA4: 33
CDAC: 4F
CDB4:F@
CDBC:78
cpc4:8D
cpcc:CcDd
CDD4:F5
CDDC: 42
CDE4: 00
CDEC:10
CDF4:CE
CDFC: 48
CEG4:38
CEGC:18
CE14:9D
CE1C:61
CE24:29
CE2C:10
CE34:D@
CE3C:6A
CE44:68
CE4C:A2
CE54:9D
CE5C:8D
CE64:A2
CE6C: 60
CE74:C8
CE7C:69
CE84:68
CE8C:A9
CE94:FF
CE9C:FF
CEA4:AD
CEAC:15
CEB4:16
CEBC:8D
CEC4:CE
CECC:F5
CED4:4F
CEDC: 16
CEE4:78
CEEC: 8D
CEF4:CE
CEFC:F5
CFO4:4F
CFOC: 28
CF14:08
CF1C: 66
CF24:76
CF2C: 0B
CF34:57
CF3C:48 67 62 31 16 74 55 7B D5
CF44:3E 36 1E 2F 1D 1C 53 79 3F
CF4C:1A 61 81 5F 6B 42 27 56 86
CF54:13 16 GF SE 69 GE 72 @7 BB
CF5C:88 2D 73 75 71 7E 7D 14 E5
CF64:87 7C 4B 65 4F 54 51 45 5A
CF6C:5D 5C 4A 63 5A 6D 28 7F AQ
CF74:2A 7A 86 85 64 6C 83 3B 68
CF7C:3D 3F 3C 46 44 4E 11 41 35
CF84:36 38 35 23 22 52 78 21 92
CF8C:1F 37 26 25 58 29 47 2E 84
CF94:1B 19 43 77 18 69 G8 5B 38
CF9C:84 15 66 59 82 65 49 62 37
CFA4:58 6A 88 04 G6 6G GB 6B 5B
136 DEMO
EQ
16
26
36
46
45
58
68
76
80
96
REM COPYRIGHT 1992 ~ COM
PUTE PUBLICATIONS INTL L
TD ~ ALL RIGHTS RESERVED
REM BY DAVID KWONG
REM
POKE53281,0:POKE53280,0:
POKE53269,0
IFPEEK (52720) =49THEN9G
PRINTCHRS (147) "PLEASE WA
IT...
IFF=OTHENF=1:LOAD"136 CO
LORS" ,8,1
IFF=1THENF=2: LOAD" SPRITE
s",8,1
SYS5269G
PRINTCHR$ (147) : POKE198,0
1086 POKE52882,150:POKE52884
116
126
136
135
136
146
156
166
176
186
196
206
210
220
230
246
258
1 174:POKE52886,198:POKE
52888,1
POKE52883,100:POKE52885
,100:POKE52887,190:POKE
52889,1
POKE52894, 200: POKE52895
1202:POKE52896, 204
POKE52890,13:POKE52891,
13:POKE52892,13
IFPEEK (52896) <>@THEN135
POKE53269, 255
FORL=13TO1STEP-1
POKE5289@,L:POKE52891,L
: POKE52892,L
FORW=1T010:NEXTW
NEXTL
PRINT" {HOME} {1@ DOWN}
{WHT }";
DIMCL (13,1)
FORL=1T013
READCL (L,@) ,CL(L,1)
NEXTL
DATA 1,13,24,32,43,51,5
2,57,58,64,65,71,72,774
82,86,88,93,96,192,163,
111
DATA 112,118,128,134
C=INT (RND(1)*13)+1:D=1
268 LO=CL(C,9)
270 POKE52890,L0:POKE52891,
LO: POKE52892,L0
286 LO=LO+D
285 IFPEEK (198) >@ANDEN=1THE
NPOKE198,6:GOTO499
NOVEMBER 1992 COMPUTE G-31
PROGRAMS
G-32
296
300
316
326
330
340
358
360
376
380
406
416
426
430
44g
450
468
478
480
490
508
510
5208
536
548
556
566
576
588
596
608
616
620
630
646
656
660
678
689
766
716
GOSUB2600
IFLO=CL(C,1)THEND=~1:GO
70274
IFLO<CL(C,@) THEN250
GOTO270
DATA "COLORS*"
DATA "£12"
DATA "BY DAVID KWONG*"
DATA "£12345678"
DATA "{BLU}*"
DATA "PRESS ANY KEY TO
{ SPACE }CONTINUE<"
POKE53269,9
PRINTCHR$ (147)
POKE52882,6:POKE52883,7
5: POKE52894, 206: POKES28
96,129
POKE53269,3
FORX=GTO174STEP2: POKE52
882,X:NEXTX
EN=0:SNS=""; PRINT"
{HOME}{7 DOWN} {GRN}"
C=INT (RND (1) *136) +1
POKE52896,C
FORW=1T030
GOSUB2008
IFPEEK (198) >GANDEN=LTHE
NPOKE198,6:GOTO70G
NEXTW
GOTO468
DATA “IN ADDITION TO BE
ING ABLE TO PRODUCE*"
DATA "136 COLORS, THIS
{SPACE}PROGRAM CAN ALSO
*
DATA "CREATE 4 HIGH RES
OLUTION (1 PIXEL RES-*"
DATA "OLUTION) SPRITES,
EACH WITH 4 COLORS.*"
DATA "OF THOSE 4 COLORS
, 1 COLOR IS CAPABLE*"
DATA "OF 136 COLORS. TH
E OTHER 3 COLORS ARE*"
DATA "RESTRICTED TO THE
16 COLORS OF THE*"
DATA "COMMODORE 64.
H HIGH RESOLUTION*"
DATA "SPRITE IS CREATED
FROM TWO SPRITES.*"
DATA "INCLUDED WITH THE
PROGRAM IS AN EDITOR*"
DATA "TO PRODUCE THESE
{SPACE}4 HIGH RESOLUTIO
Nee
DATA "SPRITES. THERE AR
E ALSO TWO INTERRUPT*"
DATA "ROUTINES INCLUDED
TO EASE THE USAGE*"
DATA "OF 136 COLORS AND
HI-RES SPRITES.*"
DATA "{BLU}*"
DATA "PRESS ANY KEY TO
{SPACE }CONTINUE<"
POKE53269,@: PRINTCHRS (1
47)
POKE52882,138:POKE52884
1162: POKE52886,186:POKE
52888,219
EAC
COMPUTE NOVEMBER 1992
RE
MQ
726
736
746
745
758
754
755
756
768
778
786
798
800
816
815
816
826
830
840
856
860
876
880
896
9066
916
926
936
940
956
960
976
988
996
1068
16198
16208
1636
1046
2600
2016
2628
2636
POKE52883,75:POKE52885,
75: POKE52887,75:POKE528
89,75
POKE52894, 208: POKE52895
, 208: POKE52896, 288: POKE
52897,268
POKE52890,1:POKE52891,2
: POKE52892, 3: POKE52893,
4
IFPEEK (52897) <>@THEN745
POKE53269, 255
PRINT" {HOME}{1@ DOWN}
{WHT }"; :EN=0:SNS=""
GOSUB2906
IFEN=@THENGOTO755
PRINT" {HOME}{6 DOWN}
{WHT}";TAB(15);"{"
PRINT" {DOWN}";TAB (12) ;"
COLOR"
DIMC (3) :C(@)=1:C(1)=2:C
(2) =3:C (3) =4:D=6
FORS=0T03
POKE52896+S,C(S)
NEXTS
PRINT" {HOME}{8 DOWN}";T
AB(17);"{4 SPACES}"
PRINT" {UP}";TAB(17) ;C(8
)
GETAS: IFAS=""THEN826
I" THEND=-1
"KTHEND=1
TO3
C (LR) =C(LR)+D
IFC (LR) >136THENC (LR) =1
IFC (LR) <1THENC (LR) =136
NEXTLR:D=6
IFAS="E"THEN1G26
GOTO796
DATA "NOW, YOU MAY OBSE
RVE THE 136 COLORS*"
DATA "YOURSELF BY SCROL
LING TO THE LEFT BY*"
DATA "PRESSING 'J' AND
{SPACE}SCROLLING TO THE
RIGHT*"
DATA "BY PRESSING 'K'.
{SPACE}TO END, PRESS 'E
tem
DATA "YOU WILL NOTICE T
HAT THE COLORS ARE*"
DATA “ORGANIZED INTO SE
VERAL GROUPS. I HAVE*"
DATA "ARRANGED EACH GRO
UP FROM BRIGHTEST TO*"
DATA "DARKEST. EACH SPR
ITE HAS ITS OWN COLOR*"
DATA "ADDRESS IN WHICH
TO POKE ITS COLOR*"
DATA "NUMBER. <"
PRINTCHRS (147) : POKE532
69,8
POKE53281,6: POKE53280,
14: POKE646,14
END
IFEN=1THEN2675
IFSNS<>""THEN2645
READSNS
IFLEFTS (SN$,1)="£"THE
HA 2046
2645
2056
FA
HP
RM 2060
RG
JE
QJ
GR
2076
2675
2886
2696
EB 2106
SPRITES
3266:08
3268206
3216:14
3218:00
3226:60
3228:14
3236:00
3238:A0
3246:66
3248366
3250:2A
3258: 608
3266:00
3268:2A
3270:00
3278:56
3280:66
3288:3A0
3296:00
3298300
32AG:A8
32A8:60
32BG0:0A
32B8:AG
32C6: 68
32C8:50
32D6: 06
32D8: 00
32E0:58
32E8:66
32F0:65
32F8:56
3300:00
3308:AG
3316:60
3318:0A
332G:AG
3328:60
3330:0A
3338:AG
3346:00
3348256
3356:68
N2680
L=LEN (SNS) :CH=@: PRINTT
AB ((41-L) /2);
CH=CH+1
IFMIDS(SN$,CH,1)="*"TH
ENSNS=""; PRINT: GOTO267
et
IFMID$(SNS,CH,1)="<"TH
ENEN=1:GOT02675
PRINTMIDS (SNS,CH,1)7
RETURN
R=LEN (SN$) -1
FORRT=1TOR: PRINT: NEXTR
ny
SNS=""3GOTO2675
Ut)
C1)
@6 14
Cl)
Ui)
66 6G 14
G2
A8
@1 54
06
2A
66 14
Cr)
2A 60 77
05 55
56
62
28
90 14
Cl)
G8 28
08 14
G2
GA 66
61 55 19
16
G6 08
@@ 55
GB 14 66
GA GB
@1 55
06
G2
20 64 59
Ur)
GA
G8 14
G8 14
62
2A 66
ol
66 16
Go
3398:7F
ve
33AG:AA
33A8:15
33BG:62
33B8: 08
33C0:08
33C8:06
33D6:80
33D8:68
33E06:55
Cl)
5¢
AA
FF
G
oa
FF
EF
3F
5E
5D
CA
B8
27
9D
35
AE
F6
33E8:EA
33F0:ED
33F8:96
340G:AA
3408:AA
3410:55
3418:AA
3420:AA
3428:55
3430:AA
3438:AA
34406:55
3448:55
3450:AA
3458:55
3466:55
3468:AA
3476:55
3478:55
AG
55
FF
AA
55
55
AA
55
55
AA
Cr)
55
AA
AA
55
AA
AA
55
Ct)
AG
29
7E
ai}
cs
23
2B
DD
3B
43
AG
FD
SB
GE
16
73
26
2E
EG
David Kwong, 17, says he hopes this
expanded palette program will gener-
ate many new ideas and give the 64 a
new look. He lives in Edmonton, Alber-
ta, Canada.
TUNNEL TRAP
By Danny English
In the days of knights and castles, dis-
putes could be settled by a sword fight,
a joust, or a good game of Tunnel Trap.
The first two activities have pretty much
faded into obscurity, but you can still en-
joy this game for the 64.
Challenge a friend to a heated battle in-
side a 32-screen maze of tunnels. De-
stroy your opponents by slingshot or by
strategically set traps. Tunnel Trap fea-
tures a realtime split screen and respon-
sive controls.
Getting Started
Tunnel Trap is written entirely in ma-
chine language. To enter it, use MLX,
our machine language entry program.
See “Typing Aids” elsewhere in this sec-
tion. When MLX prompts, respond
with the following values.
Starting address: 0801
Ending address: 1990
Be sure to save a copy of the program
before exiting MLX.
The Challenge
When you're ready to play, connect
two joysticks to the computer. Although
Tunnel Trap is written in machine lan-
guage, it loads and runs like a BASIC
program. When the title appears, you
have the option of turning trap sensors
on or off. Pressing f1 will enable trap
sensors, and pressing f3 will disable
them. They will be explained later in
the article. Pressing the space bar be-
gins the game.
The Split Screen
Playing Tunnel Trap can be a bit con-
fusing at first. The top screen belongs
to player 1, and the bottom to player 2.
Each player is controlled by joystick,
and each player has a status line.
The two views represent windows on
different sections of a large maze. The
two players begin their search for
each other at opposite ends of the
maze. Players control their knights
with joysticks. Pressing the fire button
launches slingshots. The shot fires in
the last direction that the player
moved. When the players enter the
same screen, an image of each player
appears in each window. The best way
to avoid confusion is to look only at
your own window.
The Deadly Traps
Besides being able to shoot at each oth-
er, each player begins the game with
25 traps. Player 1 can dig a trap any-
where in the tunnel by pressing f1; play-
er 2 presses f7. Your enemy cannot
see the traps you set, and you cannot
see his. You cannot fall into your own
traps. On the title screen, you have the
option to enable trap sensors, These
are state-of-the-art warning devices.
When they're activated, a green light at
the far right of the screen flashes a
warning when you're near an enemy
trap. The sensor won't pinpoint the
trap's exact location, but it does warn
you to take caution.
How to Win
On the left side of each player's status
bar is a green stamina indicator. Each
time a player is hit with a slingshot or
falls into a trap, he loses one stamina
point. When all points are gone, the oth-
er player wins that round. The game
continues until someone wins three
rounds. The victorious knight will be
crowned champion of the day. To re-
turn to the title screen at any time,
press the Commodore key in the lower
left corner of the keyboard.
TUNNEL TRAP
861:0B
G809:37
6811:26
$819:3C
@821:99
@829:B9
O831:F7
@839:2E
0841:20
G849:07
@851:05
6859:20
0861:16
@869:A2
9871:18
@879:A8
@881:F7
@889:A5
G891:E8
9899:20
G8A1:A6
@8A9:A5
@8B1:03
@8B9:DG
G8C1:34
G8C9:G3
@8D1:63
98D9:34
68E1:18
@8E9:34
@8F1:03
G8F9:20
G901:A7
9969:26
G911:66
6919:85
@921:FF
@929:FF
G931:61
G939:22
@941:C6
G949:A8
G951:F7
@959:A9
G961:F8
6969:01
G971:6A
9979:62
@981:A2
0989:8F
@991:CE
6999:E2
G9A1:B9
G9A9:66
99B1:90
@9B9:1A
69C9:AB
G9D1:C4
NOVEMBER 1992 COMPUTE
20°
68
33
6c
AQ
4c
87
c8
61
34
A2
a4
65
AS
AS
F8
20
34
18
FD
4c
1c
63
4c
E6
63
69
83
18
34
a4
AT
48
FB
cé
7]
58
AS
F8
BG
88
FO
cé
4c
60
45
05
1g
2c
F8
48
61
61
gl
3A
79
6a
78
6G
26
99
63
68
3c
Ci)
18
De
cé
3
61
20
A2
a7
FF
85
34
63
AS
65
13
AG
FO
5c
A7
De
o4
Dg
69
63
FB
cé6
Bl
68
FE
97
4c
F7
38
62
91
GA
Ag
16
9E
66
BD
F7
G8
AS
68
@8
2A
8D
8B
58
13
17
oo
26
F8
88
99
85
61
B9
F7
F9
FO
20
34
GA
85
85
EF
$3
AG
FC
A7
gl
63
68
Gl
4c
GA
A8
GA
G6
De
FO
FB
FE
A4
ce
De
16
38
85
cé
FC
Bl
16
68
32
78
42
9A
Bl
32
B6
FD
2A
18
4c
3B
13}
9E
20
20
Ur)
De
FF
2D
12
6E
EE
Dg
33
34
83
26
Ag
F8
AS
De
62
65
85
E8
84
A2
A2
5c
E8
Dg
A2
Dg
E6
6c
CA
85
FE
E7
D8
68
ES
F7
FD
98
iSE
EC
68
36
i)
G8
B7
31
co
61
E8
29
cé
RE)
3F
E2
cs
38
29
B9
68
a9
De
85
3c
E8
EE
G3
De
OA
97
85
85
G3
FE
68
85
BY,
6C
63
26
34
34
20
93
20
34
68
85
2A
Ag
08
cé6
A4
85
FO
63
ES
Bl
c4
cé
E6
@8
E3
3E
03
32
oo
67
cs
ED
BD
1F
43
93
Ag
G2
G-33
PROGRAMS
09D9:87 EF A9 46 74 EB 82 73 11] 8CG9:69 5B GE 1B 38 GD CF AD 63 | GE39:01 64 22 04 44 4B OF 34 15
O9E1:E2 FG A8 B5 B2 26 83 G1 25] GC11:Cl 15 C@ AG BE BC DG OB B7 | OE41:26 22 44 BE 32 8D 88 BS CA
O9E9:1D C5 C8 F5 3C 23 Fl 30 F6 | 6C19:02 2C 64 E4 85 C6 C6 G2 EE | OF49:2A 43 B9 18 69 G8 BD 28 B2
O9F1:8F 86 39 2D AA 4C 22 G1 33] BC21:A6 G2 G2 E6 BS G3 3C GA 72 | GE51:23 4C OF 44 20 2D 54 50 E6
G9F9:26 71 G1 G2 76 99 E6 2F 9F | 6C29:19 EB 9G 17 76 24 43 5E 75 | @£59:45 20 73 45 4C 91 45 40 56
GAG1:AC 82 36 E6 2D DG G2 E6 18 | BC31:CB 21 51 E4 G5 1C 12 E4 10 | BF61:B8 48 A4 4E 51 86 38 ED 68
GAG9:2E 82 EB ED C6 39 16 £9 56 | 6C39:39 12 1B D7 49 E4 @5 1C 57 | GE69:G1 89 SC GD 45 78 89 54 38
GA11:E8 5@ 2C DA G1 A9 37 85 83 | GC41:05 45 5E 106 3D C5 41 46 C3 | GE71:78 FO C9 EB 11 50 86 18 BC
OA19:G1 58 20 G6 40 4C AE A7 FF | GC49:5E 68 D4 BO 91 17 D3 40 16 | GE79:6D B69 40 8D 81 8E GB BC 52
GA21:CF OD 84 EE A9 G4 2C AQ 3F | GC51:5A 6E 86 91 17 48 F8 3E 65 | OE81:54 G5 20 F9 44 AC FG CF 33
GA29:68 85 FF Bl 2F 91 2D C8 AG | 6C59:79 41 2C 14 85 C5 42 2D 36 | BE89:DC F4 21 1D 16 F3 50 67 CF
GA31:C4 FF E8 2A 10 2D 21 11 EF | 6C61:53 11 26 65 2G 21 59 Al 95 | £91:74 14 33 CE 39 1D E2 3B 7F
GA39:2D A5 2E 5D 44 2E AG 85 8A | BC69:3F 42 C6 G3 98 17 G2 E6 C6 | GR99:1D 75 D4 C9 4A 50 66 G6 3F
GA41:68 E5 4C 2F 65 FF 85 2F B4 | @C71:03 5C 5E 58 78 38 40 SE F6 | GEA1:CF EE 05 CF AG 26 20 CB AB
GA49:A5 30 OB 76 F9 30 4C 6G CD | GC79:DG 81 G1 11 1B GA 90 17 C4 | GEA9:44 88 DO FA 4C 06 47 FC D9
GA51:61 B9 00 EF 99 GG FF C8 E8 | GC81:76 66 Cl F4 61 F4 14 79 F4 | GEB1:3C 26 23 61 61 DC 29 19 CD
GA59:D@ F7 CE DC @1 CE A3 BA C@ | 6C89:61 El 61 73 Dl 58 64 B4 9B | GEB9:33 41 AD 11 CF F4 9C 32 44
GA61:AD DF G1 C9 DF 80 66 2C FA | @C91:64 58 14 41 4C C3 64 G1 C3 | GEC1:32 GB AB C2 15 7E 206 F3 32
GA69:9F FE 80 96 13 7B SC C7 1D | 8C99:7C 87 26 67 AS 2E 18 2A 8C | GEC9:4E BA 16 F8 B9 AD 27 G6 26
GA71:48 1C G2 65 71 BD 33 G6 2A | GCA1:19 82 20 62 4C BB 41 13 F7 | GED1:68 GD 1A 6A 14 64 36 84 72
0A79:18 1E 4A 1B 26 1F 1B 1A 20 | @CA9:@1 32 91 8A 33 91 Bl 14 61 | GED9:4E 31 GE 2D 60 CE 4E 21 F9
@A81:2C OD 42 El BO Bl 38 DG E2| GCB1:18 13 A8 41 55 5E 1@ Bl BO | GEEL:AG 90 GC 60 EE SE G1 C8 BS
GA89:28 D5 30 33 D2 El 3A 43 36 | @CB9:40 85 CB 76 2D O8 8D 58 B@ | GEE9:C9 FO AC 34 GC BE AF 22 1C
GA91:Bl 78 23 CE 26 G8 44 62 F9| GCCl:11 4C 95 41 20 B3 2A D6 37 | GEF1:7E OF 18 56 EG DB 18 45 59
D2 98 9C 78 68 34 34 19] GcC9:42 20 F9 42 4C 17 43 26 D3 | GEF9:82 EE 43 38 B2 58 G1 8E G8
85 C3 C6 42 1c 13 19 Cl | @cD1:5C 24 2C A7 28 C3 GO F2 64 | OFO1:4E BO 2D 8E Gl FO D1 FB 69
Oc 8G 14 18 EC 38 C5 80 | GcD9:42 43 A4 93 1E 91 OB GF GE | GFO9:38 CE 72 G4 CO 20 FF FO FC
5C 26 45 1E 3B 62 73 1B | GCE1:3E C9 76 G2 CA 30 80 BC 8E | OF11:10 8F A4 C9 B5 9G G1 66 19
22 21 6D B8 21 67 A2 AD | OCE9:D@ 18 29 AC 42 7F 42 CB C@ | GF19:AD OD CF El 72 B4 6@ 4C DC
6D 41 OF 23 OA 20 67 48 | OCF1:2A E4 ES 88 23 2F 34 3A 76 | GF21:42 41 AD GO 41 FO G2 64 3C
80 30 96 Bl 21 1A D2 GA | BCF9:8A BC DO EB DB 68 ED AB 14 | OF29:29 G2 96 G2 B6 29 B8 90 4
CO 44 61 51 EC C4 BC 3D | @DG1:A3 G6 F2 G2 GE 9E EE 64 BO | GF31:02 GC 29 BA DO BD BE 4G 32
2D 17 52 C7 44 86 CA a8 | 6DG9:B9 B6 62 51 42 6B 2B CO DO | GF39:04 G1 E9 GB 96 G5 G6 G3 7E
33 8D 34 6C 78 99 34 87 | OD11:46 BG 62 32 12 OG 76 F2 5A | GF41:41 40 G7 76 2B F8 64 AG 17
7E 86 24 G6 GB 21 3D 94 | BD19:C2 BE 4F 23 9C BA G6 21 96 | BF49:AD 70 96 4A 63 AG 18 Cl 61
89 06 CB 8C B2 4F A5 71 | GD21:AC G1 9A OF BC BC CO BA G2 | OF51:DG 69 26 G4 GD 41 GB DO BB
3C 88 GB 19 67 OB 3E 78 | GD29:F9 BY AD 27 G6 F2 82 C4 9C | GF59:38 £9 78 50 B2 AD 61 54 85
40 21 7C 20 62 BC 22 FB | GD31:43 21 8E 27 C8 GB 42 GO 76 | GF61:09 G6 AY 33 BE 82 AO FF 41
26 G2 66 A2 21 £7 AE G4 | OD39:GE 84 C9 78 CA GB 38 AG DS | gF69:8D 3C 57 C3 CB 46 4C G6 42
18 85 48 6@ 26 C8 EF 8C | 6D41:83 40 33 GE CF 8A 23 GE 71 | OF71:47 DD G7 A2 E8 C8 CF 46 G6
64 49 A3 6D 36 64 68 4B | GD49:D0 82 EE 43 38 E2 C8 OB 68 | GF79:AB E8 C2 C3 GG 40 BA G4 56
E6 63 A2 06 CA DG FD GD | GD51:8C 8A 22 2F 34 38 8A BC DF | GF81:A2 C8 F2 8A 78 72 8A 15 El
FO CF El 76 AG BO E8 5D | GD59:D8 EG CE 16 G1 30 C8 36 79 | GFB9:48 CB 20 AD B5 AB G2 BG SC
9B31:67 27 AB C4 99 98 D9 88 D1 | GD61:10 AD G8 31 33 C8 OB GC El | OF91:AD G6 40 BG 86 82 BO 15 CF
9B39:39 CB DO FG 58 2C B8 99 64 | GD69:9D BC 9G 1D 41 E6 6F 21 OB | GF99:CA 52 4G 12 AS 40 1D 29 6C
9B41:91 D9 99 31 DA 13 3C DG 49 | GD71:60 67 Al 36 G5 G4 G4 AG 83 GFA1:46 51 82 15 40 4C 15 47 7A
9B49:30 80 99 3F A9 57 GF 8D 15 | 9D79:04 EO FF 75 2A 28 41 21 BA | grag:44 G1 30 O8 G1 FA 84 FB AQ
@B51:1D BC 80 C6 17 39 GO 4A 89 GFB1:AG 96 A2 58 G3 6E AG G7 95
Geer Eke i 8D 27 7¢ 29 96 oi 61 OFB9:A2 20 20 4c 47 26 DA 49 B3
9B61:8C D2 40 6E 28 E6 2A CD ;
@B69:41 16 BO 60 30 46 BA 18 91 OFC9:79 80 97 26 84 AC 64 03 58
9B71:67 2B E6 2D 4@ DG 19 2c 29 GFD1:7E AC 25 AE 42 GA 20 8B EF
9B79:D@ 8D 2E DG AJ ES BD FC 2B OFD9:47 AD BG GG C4 8D BB AA 34
9B81:8B OB FD 88 FE 07 8D FF 97 @FE1:63 69 CF A2 EE 16 @1 AD 4F
9B89:00 6E GG BY 43 63 AD BA 13 OFE9:07 CF C9 G4 DG DA EG 89 36
9B91:60 10 02 AD BB 56 GG 20 4E GFF1:19 5F 96 58 86 FE 84 FF 45
6B99:65 BC F2 G1 20 OF BD 42 CA GFF9:AC 63 F7 AB 40 86 FC 84 83
9BA1:65 AD BE 40 85 04 AD BF D8 10G1:FD AA EG G6 FO 11 76 5C EF
9BA9:26 BC 02 DB AD CO 40 46 7D 1009:25 32 47 AS CA 4C 9A 47 8F
GBB1:A3 86 66 G4 5B 6C 3A 07 BF 1011:4E 60 Cl Bl FC 91 FE C8 AG
OBB9:7B 6C DA C9 20 E4 E4 52 51 1619:C@ GA DG F7 A5 FE E4 OC B4
OBC1:FG 4C 39 53 FO G3 DB 66 11 10621:28 85 FE AS FF CA FF DG EC
@BC9:94 27 Bl 14 72 98 64 38 42 | GDF9:G1 74 28 22 3C 76 22 64 DC 1629:E@ 1A GA GE AE Dl E8 EG D1
GBD1:6C 99 8G C3 46 G8 61 96 34 | GEG1:44 AG 2c 22 F9 43 26 2F 5B | 1931:05 DB D6 EB D8 26 GE @4 G9
GBD9:C4 @5 43 B2 G1 3A 1A 24 70 | GEG9:62 41 66 OB AB BB 2C BC 88 | 1939:8D 43 £1 G1 GE AD DA 59 63
9BE1:19 GE 1B CF 84 41 12 OB CO | 6E11:9E 20 Cl 40 AE BA 43 60 G8 | 1941:17 AQ @6 74 67 58 4C 62 96
OBE9:OF 49 GA 3C 24 1B 7E Al GB | GE19:AA 2F C2 A2 ED Bl C8 68 G9 | 1g49:56 ag 53 16 6C 19 10 41 23
GBF1:41 92 El B@ 41 62 GE 1B DD | GE21:C9 BO 28 82 4C 3D CB G4 68 | 1951:FA 4F 9B 59 78 D4 C2 D1 3A
GBF9:24 BC GD 49 5G 3C 15 19 12 | GE29:42 2c E1 72 54 AG GB 54 4E | 1959:1c 23 1B 1 43 30 92 31 C6
GCO1:D3 03 OF 4F GD 10 GE 18 77 | GE31:32 G4 26 C5 4c 35 82 26 2A | 1961:04 23 22 3B 46 52 BG 14 35
G-34 COMPUTE NOVEMBER 1992
6B 91 F8 77 78 Al ED 91
84 E7 76 G2 83 4C 46 51
DC 11 91 GF D9 1F 91 C4
1D 91 68 48 20 EB 47 CB
D7 @B 43 32 16 26 FA FF
A5 F9 C9 DB D@ Fl A5 46
C9 E8 DG EB 60 A8 AE B3
FA 4C 8B 5B 26 C@ 11 91
B5 48 6D D5 64 48 CD C5
@3 95 Al 5C El 61 75 43
GF 41 62 GE 53 63 4E 4C
1c 62 AD C2 @@ 51 DA Cl
38 42 DB 65 68 AD 14 10
41 FG 63 4C G6 49 82 31
BO DB 64 19 CB 9A G3 F7
GE C5 F6 85 06 4F 62 F2
4F 96 2C EC G1 41 @4 EE
23 AS @5 56 1E Al CE F3
AD 20 GC C9 AF 84 CE CG
56 79 BO 8D 2B G6 62 20
El 52 18 6D 65 71 Dl 42
4B 40 F2 4B A5 4C 79 13
4C 8D 42 46 8E C2 AG EG
26 54 49 88 CO BB 3C 62
77 3@ FC @4 23 AC DE Fl
GA 2B 9E 46 17 E4 88 C2
G8 BB F@ 88 DA 68 AB 3D
1141:83 61 C3 83 61 A8 36 18 5D
1149:32 66 33 C2 36 66 33 C2 8B
1151:14 76 C2 32 38 84 2E 86 CC
1159:A9 @8 8D 2E DA E@ 7E 83 Cl
1161:CF 63 69 G4 F2 3C DB G8 D7
1169:64 41 A2 52 20 74 3C AG 73
1171:61 B4 63 E4 Al 20 3C 4A 406
1179:C7 BG El Cl 98 FF C3 58 66
@8 38 5A 49 48 46 5E 4B
A2 53 47 12 CF 4C 47 DF
98 64 19 1D 4D 4D 63 CC
F8 38 E9 61 85 F8 A5 83
E9 11 BF F9 92 E@ 22 57
C7 98 87 26 A8 85 12 4C
3c 12 EE C8 Bl F8 C9 Fl
DO G3 EG 21 AG 29 68 D4
AS BG 64 1D 68 A5 4D CD
69 67 85 4D AS 4E 18 41
11D1:AF 1E 4E A6 23 A2 @@ 2B 56
11D9:8A 42 @8 C8 24 32 CH 47 D1
aN
WONQSCSUWPWNMWAPrPNEBROLAL-
DNAPSONy,OY
1231:D3 93 El B@ Dl B3 31 58 7B
1239:F4 CO G1 F4 C4 97 D3 13 BE
1241:04 4F CF 04 4E 4F 1D 6C CB
1249:AG 31 G4 C9 53 DC 23 26 9B
1271:A@ 34 62 OB 91 4D 85 BA C6
1279:44 4E AY 93 62 A3 8C 82 FB
1281:8C 2E Fl 60 8C F9 87 8C A2
1289:FB 97 C®@ 99 1B DG C9 AS 8C
1291:F@ GA C9 5A F@ 11 8C EB 6G
12B1:D6
12B9:68
1311:D3
1319:E3
QOPOSUTSAIYRAOSCUrPAOAUOS
13B9:12
13C1:7C
13C9:21
URUBOOONUD
1419: 4F
1421:E8
1429:53
1431:54
ll
BC
66
66
93
B2
65
4c
GA
03
60
F9
Ag
BA
28
69
9E
DE
2E
Bo
DA
26
46
OF
43
2D
22
41
59
86
47
E4
31
54
53
BC
62
53
26
89
36
DG
34
26
AD
Ag
GA
39
63
68
07
4c
8E
39
41
4c
4D
F2
8D
4A
3B
39
26
23
2E
F8
2E
1c
54
E2
5B
5D
6E
3A
21
45
45
49
4E
8A
14
61
F6
AA
4D
DF
FO
AG
52
3E
E6
Dg
35
BB
12
E8
54
B2
cs
85
69
D6
Bl
EB
3B
DB
F8
2F
1l
98
46
AF
43
EE
91
34
A7
1459:Bl
1461:8D
1469:67
1471:76
1479395
1481:26
1489:A9
1491:25
1499:D8
14A1:D4
14A9:F2
14B1:D0
14B9:FF
14C1:38
Fl
06
28
75
16
eB
B4
8D
6c
62
99
4c
87
4E
F2
CF
67
Ag
D8
86
8D
22
21
G4
19
26
4c
46
74
6A
B3
ED
c3
26
c3
Dili
CF
94
EE
47
4F
57
14C9:4E
14D1:64
14D9:33
14E1:6C
14E9:78
14F1:19
14F9:72
15@1:7C
1569:14
1511:6C
1519:6F
1521:8D
1529:E1
1531:61
1539:98
1541:FA
1549:65
1551:FA
1559:FB
1561:34
1569:C9
1571:68
1579:61
1581:69
1589:99
1591:AD
1599:4C
15A1:A9
15A9:768
15B1:4E
15B9:64
15C1:F3
15C9:CE
15D1:20
15D9: 26
15E1:42
15E9:El
15F1:5B
15F9:8F
16G61:AF
1669:28
1611:F8
1619:55
1621:56
1629:65
1631:26
1639:74
1641:4E
1649:96
1651:16
1659:66
1661:44
1669:C2
1671:2D
1679:8B
1681:A4
1689:1A
1691:9A
1699: 28
16A1:9B
16A9: 03
16B1:63
16B9:EA
16C1:81
16C9:CD
16D1:49
16D9:84
16E1:0C
16E9:66
16F1:81
AS
FO
85
FO
1D
2F
3E
3E
BC
8D
Al
1)
86
DG
54
D6
7D
84
AS
BC
38
32
09
ol
12
8D
E2
FF
4F
26
co
CF
41
D7
35
26
88
46
1A
26
1)
E3
FF
E6
EA
6B
17
EQ
67
16
6B
48
E4
FF
21
64
81
A2
9A
35
63
9E
16
EE
68
Uy)
62
27
36
E2
41
G3
Cl)
11
G4
NOVEMBER 1992 COMPUTE
cg
A7
19
Bl
18
GA
07
Ag
23
G2
D8
93
59
FE
De
38
E8
31
FC
FD
99
AS
27
A8
66
60
93
26
5A
16
8D
82
4B
46
AT
98
26
4F
E3
c4
E8
55
AA
47
54
45
55
15
5D
55
G4
A8
A8
DB
98
25
9G
12
3D
46
cl
27
65
88
1l
92
E3
A3
8A
G4
PROGRAMS
16F9:12
1761:9D
1769:98
1711:99
1719249
1721:81
1729:6B
1731:33
1739:68
1741:62
1749:64
1751:61
1759:64
1761:E4
1769:98
1771:6F
1779:96
1781:568
1789:66
1791:73
1799:87
17A1:22
17A9:54
17B1:C5
17B9:ED
17C1:B7
17C9:4A
17D1:29
17D9:48
17E1:E1
17E9:48
17F1:BG
17F9:Bl
1801:1E
18069:44
1811:21
1819:43
1821:2B
1829332
1831:13
1839:99
1841:08
1849:62
1851:C6
1859:1E
1861:1B
1869:42
1871:F8
1879:Cl
1881:8A
1889:81
1891:2A
1899:6A
18A1:4B
18A9:1C
18B1:AD
18B9:82
18C1:47
18C9:73
18D1:A8
18D9:21
18E1:41
18E9:83
18F1:6A
1969:E6
1911:E8
1919:28
1921:9E
G-36
GE
33
93
28
OF
92
61
1l
1l
A2
A2
El
26
gc
@l
88
22
1l
El
AC
47
F8
G6
OL
AG
cl
68
4E
1c
cl
E4
gat
cl
73
co
32
26
26
FE
4B
29
61
63
16
G6
32
Dl
26
A7
9B
BB
86
AA
2A
82
OF
48
c3
66
12
43
23
24
16
26
26
96
1A
ic
G3
12
AT
Al
2:
OF
G2
Cl)
o9
2A
27
2D
g9
@5
2A
Gl
91
oo
86
co
DS
41
gc
c7
51
6D
75
1c
CF
63
B3
8E
@D
98
76
24
68
56
21
oo
39
AG
16
45
pc
49
26
5c
EA
78
47
gC
A3
82
Al
8D
20
46
gc
G2
4A
FE
AA
1D
2E
23
35
88
2c
96
G2
COMPUTE
E8
58
22
GE
@D
gc
6D
E8
99
@D
G2
G2
47
13
86
cl
FB
@5
23
28
1c
G4
32
Bo
94
86
81
cé
16
21
c8
c4
18
6c
E5
2B
cl
63
46
1D
oo
48
47
cé
42
7
8G
4E
5B
49
B9
66
A7
4D
96
2B
22
AG
4c
4B
F9
Al
BS
Fl
7B
FC
83
41
gC
31
64
63
OF
OF
oo
oc
24
GA
c8
5c
66
@D
oo
13
14
A2
GA
16
4c
B3
24
88
3c
ED
G4
31
D2
oD
92
92
2E
26
19
64
38
oc
46
67
c2
4B
G4
20
8a
81
Uy)
El
40
EA
Fl
B8
8c
82
F8
69
8c
1c
47
AS
4A
E8
G6
C3
62
7c
B4
A4
66
E9
91
c8
62
3c
2c
28
co
@D
62
66
67
@5
16
G2
OB
26
E3
cl
99
OF
42
36
71
44
63
ES
96
26
G2
14
34
51
4E
16
46
E7
17
cl
EC
76
G6
E3
36
7E
EG
g5
87
81
26
4D
38
DA
9A
AG
oo
G2
96
OA
87
4D
22
4E
G2
c3
AC
GA
68
36
83
92
E2
28
NOVEMBER 1992
12
79
37
gc
G8
A7
EB
66
G4
AG
G4
E3
G4
96
Al
79
23
Al
B7
4c
54
CE
74
26
cl
27
41
48
76
84
41
FO
Gl
AC
SE
38
8G
oo
14
3E
61
32
52
17
65
31
26
6F
7c¢
76
7B
SA
4c
48
4E
@D
4c
47
4c
85
82
GE
E3
Al
5A
cs
16
98
22
8A
E4
89
FA
Al
73
D6
31
27
@D
7A
2E
16
6G
17
F7
4B
12
6G
3A
B2
G4
4P
72
95
98
7c
CF
65
D6
58
42
eT
DB
2B
23
BE
51
SB
59
6D
F9
F3
B8
42
21
76
AS
EF
JE
c2
15
D2
73
A8
35
4E
15
56
76
75
DB
E6
3E
36
SF
66
3D
G2
B3
68
E6
39
BC
1B
32
DS
AG
81
97
AG
8c
ES
68
2F
62
26
68
21
cc
28
85
8E
94
86
EA
GB
41
1A
46
4
GA
Bl
51
92
93
92
94
56
Cl)
DA
88
AG
44
3E
93
29
cD
41
81
BA
FD
oo
1929:28
1931:8D
1939:E9
1941:41
1949345
1951:FE
1959:72
1961:AG
1969:33
1971:1F
1979:96
1981:AG
1989:A8
12
8c
26
42
46
AG
E3
96
26
BG
93
B2
oo
43
88
34
43
86
28
E4
8c
27
E3
AG
BS
9G
Danny English is a frequent contributor
who lives in Moreno Valley, California.
BASIC MOVE AND SAVE
By Daniel Lightner
Have you ever been in the middle of a
great BASIC programming session
when all of a sudden an OUT OF MEM-
ORY ERROR message appears on the
screen? Perhaps you've had a large pro-
gram to halt in the middle of execution
with a similar error message?
As a programmer, you may know that
there's a 4K block of free RAM hidden un-
der BASIC'’s ROM and RAM from 49152
to 53247. Wouldn't it be great if you
could store some of your BASIC code
there?
Well, you can with BAMOV and BA-
SAV. These two utility programs for the
64 letyou use this block of RAM that's usu-
ally reserved for machine language pro-
grams. They are particularly useful
when you're using programs that require
a lot of sprite or character data.
Getting Started
BASAV and BAMOV are written in ma-
chine language. To enter them, use
MLX, our machine language entry pro-
gram. See “Typing Aids” elsewhere in
this section. When MLX prompts for
starting and ending addresses for BA-
SAV, respond with the following.
Starting address: COOD
Ending address: COC7
When entering BAMOV, respond with
these addresses.
Starting address: CF62
Ending address: D001
Be sure to save each program before
leaving MLX.
A Few Rules
Before these programs can be used,
certain techniques must be employed
and certain rules followed. Your large
BASIC program must be divided into
two parts. The second part of the pro-
gram will be called by the first part dur-
ing execution.
It's important to note that program 2
must be at least 42 bytes shorter than
program 1. In most cases you won't
have any problems determining this
size differential, but here’s a way to
check. Load program 1 and type this
line of code in direct mode.
PRINT INT(PEEK(46)*256)+PEEK(45)-2049
The value returned is the length of the
Program in bytes, Load the second pro-
gram and enter the line again. To de-
termine the difference, subtract the val-
ue given for program 2 from the value
given for program 1, The number re-
turned must be 42 or greater.
Special Coding
Program 1 must contain these or simi-
lar lines of code at the end of the pro-
gram, Just be sure the line numbers
are high enough to place the code at
the end of the listing.
50000 GOSUB 50005
50001 SYS 53090: RETURN
50005 SYS 53090: GOTO10
When you want program 1 to call pro-
gram 2, read its data, or whatever,
have it GOSUB to line 50000. When pro-
gram 2 has finished executing, the pro-
gram will return normally to the next
statement following the GOSUB 50000.
However, it's not mandatory that con-
trol return to program 1.
Program 2 must also begin with what-
ever line the GOTO in line 50005 of pro-
gram 1 dictates. In the above example,
it's line 10. Remember to keep this num-
ber below 50000.
To pass contro! back to program 1,
Program 2 must end with a RETURN
that is not part of any GOSUB routine
in program 2.
A Demonstration
Two short demo programs labeled
Prg1 and Prg2 are included to demon-
strate how BASAV and BAMOV work.
These programs are written entirely in
BASIC. To help avoid typing errors, en-
ter them with The Automatic Proofread-
er. See “Typing Aids” again.
Running the Demos
Note that when Prg1 executes, it
loads BAMOV and a file called Pro-
gram2 into memory. Having the pro-
gram load these two is not mandatory.
You could load these two programs in
direct mode before loading and run-
ning Prg1. If you decide to load them
in immediate mode, delete lines 25
and 30 of Prg1. This will be better un-
derstood as we continue.
Load BASAV with the ,8,1 extension.
Then type NEW and press Return.
Now load Prg2 as you would any BA-
SIC program. Before you go further, be
sure there's a formatted disk in drive 8
in order to receive a relocated version
of Prg2. Then type SYS 49152 and
press Return. The program will run,
and the file will be saved as BAS-TMP.
After the file has been saved, enter the
following line of code in direct mode.
OPEN1,8,15, “RO:PROGRAM2=BAS-TMP”:
CLOSE1
It should be clear now that PRO-
GRAN2 as listed in Prg1 is Prg2 relo-
cated. Place a copy of BAMOV on the
same disk as Program2. Reset the com-
puter by either typing NEW or turning
it off and on again. Load Prg1 and
place the disk containing Program2
and BAMOV in drive 8. When you run
the program, notice that control alter-
nates between the two programs.
As its name implies, BAMOV is the
BASIC mover. It pulls program 2 from
beneath BASIC's ROM and places
part of program 1 there. When activat-
ed again, it does the reverse.
When control is passed to line
50000 in program 1, it does a GOSUB
to line 50005 so that when a RETURN
is encountered, it will return to the
next set of commands. At line 50005,
BAMOV is activated, pulling program 2
into BASIC's memory while removing
program 1. After it returns from the SYS
call, the program encounters the
GOTO10 command, and BASIC pass-
es control to line 10 of program 2.
Program flow continues from there un-
til it encounters a RETURN. At that
point, control returns to line 50001
following the GOSUB in line 50000 of
program 1.
Note that this line must remain at the
same location in memory. This is the
reason for making sure that program 2
is at least 42 bytes shorter than pro-
gram 1. Next, BAMOV is called again,
and program 1 is put back in place.
The RETURN in liné 50001 returns con-
trol to the line that originally called the
GOSUB50000, in this case line 65. All
the switching back and forth may
sound confusing, but it should become
clear when you run the programs.
BASIC programs that require sprite
and character data can read the data
into memory and then pass control to
the second program. But remember
that this can only work as long as the
second program is shorter than the
first program.
BASAV
CO@G:AD GE DC 29 FE 8D @E DC 31
C@G8:A5 61 29 FE 85 G1 AD GE 4B
C@1G:DC 69 G1 8D BE DC AI Cl 34
CG18:8D 18 G3 AO 34 8D 14 G3 64
C62G:A5 2D 8D GG AG A5 2E 8D F6
CG628:61 AG AO G1 85 FB AO G8 GF
C@30:85 FC A9 63 85 FD AOI AG 31
C638:85 FE A5 2D 8D B2 @2 AS A4
C@40:2E 8D B3 62 AG GO Bl FB 37
C@48:91 FD 28 9F C® AS FB CD 72
C@50:B2 62 D@ F2 A5 FC CD B3 65
C676:FE A9 6G 85 FD A9 AG 85 91
C@78:FE A9 FD 26 D8 FF AD GE D5
C68G:DC 29 FE 8D SE DC A5 @1 A3
C688:69 G1 85 Gl AD BE DC 89 F7
C690:G61 8D GE DC A9 47 8D 18 23
C698:63 AY 31 8D 14 63 66 18 BA
C@AG:A5 FB 69 61 85 FB A5 FC 95
CGA8:69 G6 85 FC 18 A5 FD 69 1C
CGB@:G1 85 FD A5 FE 69 66 85 51
COB8:FE 6@ 42 41 53 2D 54 4D 73
CGCG:58 GB BG BB GG GB GB BB 6A
BAMOV
CP62:AD GE DC 29 FE 8D GE DC Bl
CF6A:A5 @1 29 FE 85 G1 AD GE CB
CF72:DC 69 G1 8D GE DC A9 Cl B4
CF7A:8D 18 G3 A9 34 8D 14 G3 E4
CFCA:@1 85 @1 AD GE DC G9 G1 3E
CFD2:8D BE DC AY 47 8D 18 83 96
CFDA:A9 31 8D 14 63 68 18 AS FD
CFE2:FB 69 @1 85 FB A5 FC 69 2D
CFEA:@0 85 FC 18 AS FD 69 @1 G6
CFF2:85 FD A5 FE 69 96 85 FE CE
CFFA:68 66 GG G@ GB GB BB BB CA
PRGI
EA 10
GJ 15
REM COPYRIGHT 1992
REM COMPUTE PUBLICATIONS
INTL LTD
REM ALL RIGHTS RESERVED
X=X+1: IFX=]THENLOAD"PROG
RAM2",8,1
IFX=2THENLOAD"BAMOV", 8,1
PRINT" {CLR}": POKE53280,0
:POKE53281,0
PRINT"{2 DOWN}{2 RIGHT}
{7}THIS IS PROGRAM ONE O
F THE BAMOV DEMO."
PRINT" {DOWN} {2 RIGHT}PRO
GRAM TWO IS UNDER BASIC'
S ROM."
PRINT"{2 DOWN}{2
T WILL CLEAR THE
{SPACE}AND"
PRINT"{2 DOWN} {2
HANGE THE SCREEN
DER COLORS"
PRINT"{2 DOWN}{2 RIGHT}W
HILE DISPLAYING A MESSAG
EL"
FORT=1T05006:NEXTT
GOSUB56606
POKE53280,0:POKE53281,0:
PRINT" {CLR}{2 DOWN}
{2 RIGHT}{7}BACK AT PROG
RAM ONE NOW!"
HE 80 END
RA 56666 GOSUB50005
RQ 56001 SYS53090:RETURN
MX 50005 SYS53699:GOTO1@
GM 26
HA 25
AP 36
AJ 35
HA 40
MQ 45
RIGHT }I
SCREEN
DQ 5a
RIGHT }C
AND BOR
CM 55
ES 68
FB 65
AX 76
PX 75
PRG2
EA 16
Gg 15
REM COPYRIGHT 1992
REM COMPUTE PUBLICATIONS
INTL LTD
REM ALL RIGHTS RESERVED
PRINT" {CLR}":POKE53286,6
: POKE53281,6
PRINT"{2 DOWN}{2 RIGHT}
{WHT}THIS IS PROGRAM TWO
OF THE BAMOV DEMO."
PRINT"{2 DOWN}{2 RIGHT}W
HEN THIS PROGRAM FINISHE
S, IT WILL"
PRINT"{2 DOWN} {2
ETURN CONTROL TO
661"
PRINT" {2 DOWN} {2
F PROGRAM ONE."
FORT=1T05009:NEXTT
RETURN
GM 26
EQ 25
PX 36
MX 35
RIGHT}R
LINE 5@
HR 46
xc 45 RIGHT }O
PC 50
PDS)
Daniel Lightner, a frequent contributor,
lives in Sidney, Montana.
NOVEMBER 1992 COMPUTE G-37
PROGRAMS
NOAH’S READER
By Daniel Lightner
Last year (July 1991) we published
Noah's Arc, a program that creates self-
dissolving archive (SDA) files. People
who use that program will find this short
utility program for the 64 valuable.
Archiving is a convenient method for
combining a number of related files into
one master file. This process is conven-
ient for uploading and downloading pro-
grams and instructions to and from a
BBS. Many files and programs can be
stored within one large file. When the
SDA file is loaded and run, it dissolves in-
to the original individual programs and
saves them to disk.
The problem with archive files is that un-
less you have the filenames written
down, there isn’t any way of knowing the
contents of the archived file. This is es-
pecially true if you have just downloaded
a new file from a BBS or have come
across a forgotten SDA file in your library.
Dissolving the file will do the trick, but it's
time-consuming and a bit awkward.
Noah's Reader solves this problem.
Noah's Reader reads the beginning of
the SDA files from disk and lists the
names of the files that are stored within
the archive file.
Entering the Program
Noah's Reader is written in machine lan-
guage and will have to be entered us-
ing MLX, COMPUTE's machine lan-
guage entry program. See “Typing
Aids" elsewhere in this section. When
MLX prompts for starting and ending ad-
dresses, respond with these values.
Starting address: 0801
Ending address: O9F7
Make sure that you save a copy of
Noah's Reader before you exit MLX.
Running the Program
Noah's Reader loads and runs like a BA-
SIC program. The first thing it does is
to ask for an SDA filename. It then
searches drive 8 for that filename and
reads information until it locates the var-
ious filenames.
Noah's Reader then lists those files
to the screen. The listing can be
stopped by pressing any key. When
the key is released, the listing contin-
G38 COMPUTE NOVEMBER 1992
ues until it prints the names of all of the
archived files.
Run Noah's Reader again to read an-
other SDA file.
NOAH’S READER
9801:0B G8 GA BG 9E 32 39 36 2E
G809:31 6G GG GG AG BB 8C 20 EF
G811:D8 8C 21 DB BO 8F G9 CI C5
G819:FF FS 67 26 D2 FF C8 4C BC
G821:15 G8 AG BG 26 FA G8 BO 88
9829:85 69 26 D2 FF C8 C@ GA IE
G831:D6 F5 26 FA 68 AQ 3E 20 SE
@839:D2 FF 26 15 @9 AC 34 G3 6E
G841:A2 @G BD 81 89 99 35 G3 8E
@849:EE 34 63 C8 E8 EG G5 DB 76
@851:Fl CE 34 63 AD 34 G3 A2 AB
9859:35 AG 03 20 BD FF AQ 62 D1
G861:A2 G8 AG B2 86 FC 20 BA 1C
@869:FF 26 C@ FF 20 CC FF A5 73
@871:BA 26 B4 FF AQ 6F 85 BY 4D
G879:26 96 FF 26 AS FF C9 36 32
9881:D@ GD 26 AS FF C9 30 DG F3
6889:06 2G AB FF 4C 96 98 20 97
9891:AB FF 4C E7 @8 A2 G2 26 6E
@899:C6 FF 26 FA @8 AQ G1 85 2F
G8Al1:FB 20 Fl G8 20 E4 FF 85 90
@8A9:FE 26 67 69 AS FB C9 BO 14
@8B1:D@ F2 A5 FC C9 G9 DB EC 6C
68B9:20 E4 FF 85 FD A2 8G 26 86
G8Cl1:E4 FF C9 2C FO G8 26 D2 FA
@8C9:FF E8 E4 FD DG Fl AQ GD 3F
@8D1:26 D2 FF 26 Fl 68 26 Fl 8A
@8D9:08 26 E4 FF A5 CB C9 48 C2
G8E1:D@ FA C6 FE D@ D2 A2 66 FB
G8E9:20 C6 FF A9 62 4C C3 FF 1F
@8F1:26 E4 FF 26 E4 FF 4C E4 Fl
@8F9:FF AQ GD 26 D2 FF 28 D2 Cl
G961:FF AQ 9A 4C D2 FF 18 AS G2
@969:FB 69 61 85 FB A5 FC 69 C5
@911:96 85 FC 68 AG GB AI BO 82
@919:8D 34 63 26 E4 FF C9 8G IC
@921:F8 F9 C9 14 FO 41 C9 7B 4G
@929:BG Fl C9 11 FO ED C9 13 48
@931:F6 E9 C9 1D FO E5 C9 22 16
9939:F@ El C9 2C FO DD C9 GBD D7
G941:FG 19 AC 34 63 CO 14 FG DC
9949:D2 26 D2 FF 28 5E 69 4C FF
@951:1C 69 AC 34 63 CO GG FG 98
@959:C2 26 D2 FF 66 AC 34 63 5G
$961:99 35 @3 EE 34 93 66 AC F7
G969:34 63 CO 61 BB G3 4C 1C C4
@971:69 26 D2 FF 38 AD 34 @3 4E
G979:E9 61 8D 34 63 4C IC 69 49
@981:2C 56 2C 52 46 49 4C 45 9D
9989:4E 41 4D 45 20 3F 93 9A DG
G991:6D 26 26 26 20 26 26 4E 48
G999:4F 41 48 27 53 26 53 44 25
G9A1:41 2G 52 45 41 44 45 52 F2
G@9A9:GD 2G 20 26 28 20 26 28 32
G9B1:43 4F 56 59 52 49 47 48 67
G9B9:54 2G 31 39 39 32 BD 43 A7
@9Cl1:4F 4D 58 55 54 45 26 56 76
@9C9:55 42 4C 49 43 41 54 49 46
@9D1:4F 4E 53 26 49 4E 54 4C G4
@9D9:28 4C 54 44 8D 26 29 29 27
G9E1:26 2G 41 4C 4C 26 52 49 C9
G9E9:47 48 54 53 26 52 45 53 99
G9F1:45 52 56 45 44 OD FF 06 BG
Daniel Lightner is a frequent contribu-
tor who lives in Sidney, Montana.
LOCATE
By Farid Ahmad
Programmers who use BASIC are famil-
iar with the various tricks for positioning
text on a screen. Most use various
PRINT statements and a lot of trial and er-
ror, but now there's a better way.
Locate is a short machine language
routine for the 64 that provides BASIC pro-
grammers with two commands for cursor
positioning and text color adjustment. Al-
though the program is written in BASIC,
it stores its machine language subroutine
in a BASIC REM statement. This tech-
nique provides the speed of machine lan-
guage with the convenience of BASIC.
Preparing Locate
Notice that Locate’s first line contains
a REM followed by 73 periods. It looks
strange, but it's important not to
change this line in any way. Since this
line fills two screen lines, enter it with-
out a space between the line number
and the word REM. If you include the
space, your cursor will drop down a
line after you type the final period.
Should that occur, cursor back up to
the line and press Return.
Locate is written entirely in BASIC.
To help avoid typing errors, use The Au-
tomatic Proofreader to enter the pro-
gram. See “Typing Aids” elsewhere in
this section. Be sure to save a copy of
the program when you've finished.
Load and run the program. Now list
it again. You'll see that Locate's first
line number is missing and the line it-
self contains a number of meaningless
characters. Next, delete lines 30-90. De-
lete a line by cursoring to an empty
spot on the screen, typing 30, and
then pressing Return. Do this for lines
30-90. Finally, the program will consist
of only two lines: the unnumbered
line 10, which contains the meaning-
less symbols, and line 20. Save this
two-line program with the usual SAVE
command.
Using the Program
Before starting to write a BASIC pro-
gram, load this two-line program. Now
start writing your program with a line
number greater then 20. When you
want to position text, the following two
commands are available.
SYS AT, row, column, color
The row may be from 0-24 and the col-
umn from 0-39. The color may be
from 0-15, the usual Commodore col-
ors. This parameter will effect the col-
or of following text. Values outside
these limits will produce an ILLEGAL
QUANTITY ERROR message.
For example, SYS AT, 5, 0, 1 will po-
sition the cursor at the beginning of the
sixth screen line and change text col-
or to white. The color parameter is op-
tional. If you don’t want to set the text
color, omit this parameter and the pre-
ceding comma. SYS AT, 5, 0 will posi-
tion the cursor at the same place but
will not change the text color. Spaces
after the commas are also optional.
Any PRINT statement that follows this
or the following command will begin
printing at the cursor position that you
have indicated.
SYS CL, row, column, color
The syntax of this command is exactly
the same as that of SYS AT, but it
clears the screen before positioning
the cursor. For example, SYS CL, 0, 0,
1 will clear the screen, position the cur-
sor at the upper left corner, and set
text color to white. As with SYS AT, the
color parameter is optional.
Other Considerations
The machine language routine in Lo-
cate is relocatable. It will work correct-
ly even if the start of BASIC pointer has
been changed. The only condition is
that the two lines of Locate be the first
two lines of the program. The line num-
bers, however, may be changed with a
renumbering utility.
The variables AT and CL are de-
fined by Locate as the starting address-
es of the Locate routines. These varia-
bles must not be used elsewhere in the
program, or the program might crash.
If you want to use Locate with an ex-
isting program, you'll need a merge util-
ity, such as the MERGE command in
METABASIC. Renumber your program
so that the first line number is greater
than 20. Then merge it with Locate.
A Demonstration
Demo is a demonstration program that
illustrates some of the ways Locate com-
mands can be used and modified. It's
also written in BASIC and should be en-
tered with Proofreader.
With a merge program, you can com-
bine the two programs later. If you
don't have a merge program, load and
run Proofreader, load the two-line Lo-
cate program, and then enter Demo,
starting with line 30.
The Technique
The technique used with Locate is a
convenient way of adding short ma-
Chine language routines to BASIC pro-
grams. A few things must be kept in
mind, however. First, the ML routine
must not contain the number 0. This is
because 0 is reserved by the BASIC in-
terpreter to mark the end of a BASIC
line. Since O is the ML instruction for
BRK, it's seldom required. It may be
needed, however, as the argument of
an ML command. It's usually possible
to get around this problem. For exam-
ple, to load the X register with 0, use
LDX#1, :DEX.
Note the quotation mark at the begin-
ning of the first line. If this is not includ-
ed, the ML numbers will be interpreted
as BASIC tokens. This will still work,
but the resulting list may look a bit
strange. The quote itself may also pro-
duce some problems. Once the quote
is encountered, some of the graphic
characters might be interpreted as con-
trol characters. When the program is list-
ed, the list may change colors, or the
screen may be cleared. This is irritat-
ing, but it doesn't do any harm to the
program. The best way to avoid this
problem is to list the program from the
second (or higher) line. Whether or not
the quote is used, once the ML is in
the REM statement, do not reenter the
line by pressing Return over it. This
will enter the line incorrectly and garble
the ML. If the quote has been used,
the line may look the same after reen-
tering, but the damage may still have
been done. This is because many
graphic symbols have more than one
POKE code, and the BASIC editor al-
ways stores the lower value in memo-
ry. So if your ML contains the instruc-
tion JSR $AEFD, reentering the line will
change this to JSR$ AEBD, as $FD
and $BD are the POKE codes for the
same graphic symbol.
Locate prevents this from happen-
ing by including enough delete charac-
ters in the line to delete the line num-
ber. Thus, the line cannot be reentered
by mistake.
LOCATE
EQ (OREM( si syarejale)staieis| cet wees oe
EC 26 CL=PEEK(43)+256*PEEK (44)
+14:AT=CL+5
DATA29,20,26,20,20,20,20
720
DATA{2 SPACES}169,147,83
2,216,255,032,253,174,03
2,158,183,134,002,032,25
3,174,032
DATA{2 SPACES}158,183,13
8,168,166,092,224,025,17
6,933,192,640,176,029,02
4,032,240
DATA{2 SPACES}255,160,00
1,136,177,122,176,224,04
4,208,014,234,032,253,17
4,032,158
DATA{2 SPACES}183,224,61
6,176,604,142,134,962,09
6,162,014,076,139,227
FORI=6T072: READA:CK=CK+A
:POKE CL~8+1I,A:NEXT
IFCK<>8427 THENPRINT"ERR
OR IN DATA STATEMENTS":E
ND
KD 30
KG 46
AE 50
CI 68
AS="L OCA T E":B$="Loc
ATE"
PP=15
POKE5328G,0:POKE53281,0
SYSCL,14,69,1:PRINTAS
FORA= 1 TO 99
SYSAT,A,A,A:PRINTBS
SYSAT,A,35~A,A:PRINTBS
NEXT
FOR A=13 TO 1 STEP -1
SYSAT,A+10,A+10,15-A:PR
INTBS
NEXT
FOR A=1 T0100
SYSAT,16,09,A-INT (A/15)
*15:PRINTAS
NEXT
SYSCL,5,3,1
PRINT"LOCATE ALLOWS YOU
TO POSITION TEXT"
SYSAT,7,5,2
PRINT" ANYWHERE"
SYSAT,9,13
PRINT"ON"
SYSAT,11,15
PRINT" THE
SYSAT,13,206
PRINT"SCREEN"
NOVEMBER 1992 COMPUTE G-39
PROGRAMS
XX 276 SYSAT,PP,5,3
SJ 286 PRINT"IN"
FR 296 SYSAT,PP,19,6
FJ 360 PRINT" ANY"
FB 319 SYSAT,PP,15,11
PR 326 PRINT"COLOR"
MM 336 FORA=@ TO 15:SYSAT,PP,2
2+A,A
QQ 346 PRINT"!"
BH 359 NEXT
Farid Ahmad is a frequent Gazette con-
tributor. He lives in Islamabad, Pakistan.
BUG-SWATTER
A portion of the machine language list-
ing for Blanker in the August 1992 is-
sue was omitted. We regret the incon-
venience it may have caused some
readers. Here is the entire listing.
If you have already entered and
saved the earlier portion, load and run
MLX, responding with the following start-
ing and ending addresses.
Starting address: 0247
Ending address: 0763
Now select Load File from the MLX
menu and load the saved file. Then be-
gin entering data from address 03D7.
After you have saved the entire pro-
gram, remember that it must be convert-
ed to GEOS format with the converter
program in the August issue.
BLANKER
9247:0F 63 15 BF FF FF FF 88 B2
G24F:06 G61 BF FF FD BO 60 GD 4B
@257:AG GB G5 AG GG G5 AG BB AB
@25F:65 AG GB G5 AG BG G5 AG GE
G267:06 65 AG GG G5 AG GB BS 78
G26F:AG 6G G5 AG BB B5 BB BG E3
@277:0D BF FF FD 88 6@ @1 FF D7
G27F:FEF FF 4F FE 72 20 68 @4 75
9287:3F FF FC 83 @5 86 60 G4 2F
G28F:BA 2C 66 64 53 63 72 6E B7
6297:20 42 6C 61 6E 6B 65 72 3E
G29F:56 31 2E 38 G@ GG BB GG E3
@2A7:43 68 61 72 6C 65 73 26 BA
G2AF:57 2E 26 42 6F 7A 61 72 AD
@2B7:74 68 26 GF 2C 66 GB 44 AA
G2BF:65 73 6B 26 61 63 63 65 87
62C7:73 73 6F 72 79 26 66 6F FF
@2CF:72 20 62 6C 61 6E 6B 69 2D
@2D7:6E 67 26 74 68 65 26 47 98
@2DF:45 4F 53 20 73 63 72 65 3A
@2E7:65 6E 2E GF 34 86 BG 26 B2
“O2EF:4E Cl 26 B7 Cl @@ 66 99 73
@2F7:08 40 1F 20 53 C2 8G C8 64
G2FF:0@ G@ 4G G1 AO 8G 85 2F A5
@367:20 B7 Cl 1F 85 1E 29 9C C8
G3GF:03 20 B6 G6 26 31 G7 28 C9
G-40 COMPUTE NOVEMBER 1992
G317:E6
G31F:A9
@327:84
@32F:8D
G337:A9
G33F:A9
@347:88
@34F:C8
@357:AD
@35F:A9
$367:29
O36F:05
6377:Cl
@37F:3E
6387:06
@38F:AD
0397:66
@39F:8D
93A7:88
G3AF:06
@3B7:A4
@3BF:3D
@3C7:18
@3CF:62
@3D7:04
O4BF:8D
G4C7:64
62
39
8D
Ag
3B
3c
29
67
99
61
9c
8G
tT)
8G
B4
29
8D
ag
ag
85
28
91
65
AS
cg
cg
84
QBOHBUUOHAD
958
G597:E6
85
96
3c
gC
08
96
AS
DG
93
E4
co
65B7:19
@5BF:8C
@5C7:28
@5CF:97
65D7:95
G5DF:87
G5E7:19
GOSEF:F8
@5F7:98
OSFF:84
@687:97
G6GF:04
G617:93
G61F:A9
G627:A9
G62F:A9
@637:A9
G63F:9C
G647:A9
G64F:9B
6657:67
G65F:C9
@667:17
G66F:A9
@677:DG
G67F:16
G687:87
G68F:69
0697:GB
G69F:06
G6A7:85
G6AF:69
G6B7:81
G6BF:11
G6C7:30
G6CF:G8
G6D7:54
G@6DF:12
@6E7:11
@6EF:21
G6F7:21
G6FF:21
6787:21
O7GF:92
@717:208
O71F:26
@727:56
@72F:65
6737:61
@73F:76
6747:18
674F:18
9757:65
@75F:1B
9767:86
11
De
6
66
G4
6
91
65
CA
SL
1)
65
33
ag
ag
26
84
8D
84
85
85
60
G2
AS
94
G1
16
G8
GA
66
F6
26
ol
16
@B
6C
a3
g8
4D
G2
62
62
62
20
26
Cr)
73
74
6E
6E
6E
73
44
69
Uy)